美文网首页
Swift 语言学习笔记_1

Swift 语言学习笔记_1

作者: lightandall | 来源:发表于2017-02-19 23:05 被阅读24次

    About me: 在学习Swift之前完完全全的零基础编程,不知道变量与常量区别的那种零基础。

    教程主要看   http://www.runoob.com/swift/swift-environment.html  和官方文档的原版对比着看https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html   我写下来的笔记一般都是上述教程没有说明的,需要自己去查的。

    其它参考:swift官方网站:https://swift.org/

    2017-2-19


    ```

    import UIKit      //想创建IOS playground,需要引入import UIKit

    var str = "Hello,playground"      //第一行程序

    print(str)

    print("hello,Youngxkk")

    /*print是输出显示打印的意思,标记是:单词,符号。tips:需要加上双引号的情况是指要打印的字符串不是来自变量或者常量,也不涉及到其他代码的字符串。不用加双引号的情形是打印某个变量*/

    "hello,world" //是字符串,是字符的序列集合,多个字母单词

    "a"//是字符,也就是指的单个字母

    ```


    //常量的命名可以由字母数字和下划线组成。

    ```

    let _name = "youngxkk"

    print(_name)

    let 你好 = "hello or hi"

    print(你好)

    let name = "Youngxkkk"

    let site = "www.youngxkk.com"

    print("\(name)的网站地址是:\(site)")

    ```


    //变量声明,在使用变量声名前,你需要使用var关键字声明它,如下

    var meaningOfLife = 42      //变量命名

    print(meaningOfLife)      //变量输出

    var youngxkk = "百科小王子"      //变量命名

    print(youngxkk)      //变量输出

    print("youngxkk,u r god\(meaningOfLifetest)")      //变量输出


    //标识符号:区分大小写MY与my是两上不同的标识符。


    //swif字面量,直接了当的指出自己的类型并为亦是进行赋值的值

    42      //整数形

    3.14159       //浮点型

    "hello"       //字符串型

    true      //布尔型,英文=bool , 类似设计工具中的布尔运算,但又不完全相同,

    //swift有两个布尔值bool的类型。也就是两个布尔常量,true和false,也就是他们只能是真或是假。通俗的讲就是非黑即白


    /*Swift的可选(Optionals)类型,用于处理值缺失的情况,表示那儿有一个值"x"或者那儿没有值,

    swift定义"?",问号作为命名类型Optional的简写*/

    var optionalInteger: Int?

    va roptionalInteger: Optional<Int>      //这一行不知为啥会报错,至少没解决???


    //如果一个可选类型的实例包含一个值,可以在其后面加上后缀操作符"!"来访问这个值

    OptionalInteger = 42

    OptionalInteger!


    let maxumumNumberOfLoginAttempts = 10

    var currentLoginAttempt = 0

    //常量,最大登录次数,变量,已经登录次数

    var x = 0.0,Y = 0.0,Z = 0.0

    //声名多个变量,逗号隔开。

    var a = 2,b = 3,c = 4

    print(a)

    print(x)


    var welcomeMessage: String

    //欢迎提示的字符串,声明一个类型为string,名字为welcomeMessage的变量。

    //welcome的变量“string”可以设置成任意字符串

    welcomeMessage = "hello,world"

    var iloveyou: String

    iloveyou = "young"

    print(iloveyou)

    var red,green,blue: Double

    //一行中类型的多个变量,逗号分割,最后一个变量名之后添加冒号和类型标注

    let π = 3.1415926

    let你好啊= "hello,world"

    /*常量和变量的命名,常量或者变量声明为确定的类型后,不可使用相同的名子在次声明,或改变存储的类型,常量与变量不可互转。

    但可以改变现有的变量值为其它同类型的值如下方*/

    let constB:Float = 3.24232221

    //常量后面的冒号和Float是类型标注

    var friendlyWelcome = "hello!"

    friendlyWelcome = "bonjour!"

    //此时,friendlyWelcome输出的值是"bonjour!",常量值(let)不可以更改

    print(welcomeMessage)

    print("weilcome to my country \(welcomeMessage)")

    //使用双引号和括号前加反斜杠,可以将常量或变量转义

    let cat = "animal";print(cat)

    //同一行中有多条独立语句时,使用分号区分

    print(cat)

    let minValue = UInt8.min

    //minValue为0,是UInt8类型

    let maxValue = UInt8.max

    //maxValue为255,是UInt8类型

    //double表示64位浮点数,精度很高,有15位,Float表示32位浮点数,只有6位。

    let meaningOfLife = 42

    //meaningOfLife会被推测为Int类型,整数类型。打印的时候提示框中显示了int

    print(meaningOfLife)

    let pi = 3.1415926

    //pi会被推测为Double类型,下一行打码打印的时候弹窗提示框提示了Double

    print(pi)

    let anotherPi = 3 + 0.1415926

    print(anotherPi)

    /*anotherPi会被推测为Double类型

    因为当表达示中同时出现整数和浮点数,会被推断为Double类型*/

    /*

    以上所了解的,提到了基本的数据类型,包括整数int,浮点数Double和Float,布尔类型Bool以及字符串类型String,此外Swift还提供了其它更强大的数据类型:Optional,Array,Dictionaty,Struct,Clsaa等

    */

    //String型字面量,是由("")包含在内的广西字符集,如下

    let wisewords = "\"我是百科小王子\" -"

    let dollarsign = "\u{24}"

    let blackheart = " \u{2665}"

    //这里遇到一个问题,swift2.1及之前的版本都没有在24外面加上{}符号,所以编译一直出错,看了官方的3.0英文原版文档加是{}才正常。

    /*

    顺便记一下转义字符及含义\0空字符,\b退格,\f换页,\n换行,

    \r回车,\t水平制表,\v垂直制表,重要的点\'是单引号,\"是双引号

    下面尝试一下空格及换行

    */

    let StringLiterals = "helloworld\n\n欢迎来查看我的swift学习笔记:\'www.youngxkk.com\'"

    print(StringLiterals)

    //算术运算符

    var A = 10

    var B = 20

    print(A + B)

    print("A - B = \(A - B)")

    //比较运算符

    print(A == B)//==是等于的意思

    print(A != B)//!=是不等于的意思

    print(A > B)//>是大于的意思

    print(A <= B)//<=是小于或等于的意思,因为结果为true

    /*逻辑运算符,下主是三个主要说明

    &&逻辑于。如何运算符两侧都为TRUE则为TRUE

    ||逻辑或。如果运算符两侧至少有一个为TRUE则为TRUE

    !逻辑非。布尔值取反,可以全true变false,使flase变为true

    */

    var C = true

    var D = false

    print("C && D结果为:\(C && D)")

    print("C || D结果为:\(C || D)")

    print(!C)

    print(!D)

    //位运算符号用来对二进制进行操作

    //赋值运算

    var f = 10

    var g = 20

    var h = 100

    h = h + 10//他的本意是本身的值在加上10,然后赋值给本身,为了简化,这个代码也可以写成h+=10

    h = f + g

    print("h结果为:\(h)")

    //h是变量,不可以是常量,

    h += g

    print("h结果为:\(h)")//相当于h=h+g

    h -= f

    print("h结果为:\(h)")//相当于h=h-f

    h *= g

    print("h结果为:\(h)")//相当于h=h*g

    h /= f

    print("h结果为:\(h)")

    //区间运算符

    print("区间运算符1到5")

    for index in 1...5 {

    print("\(index)* 5 = \(index * 5)")

    }

    print("闭区间运算符1之后,小于5")

    for index in 1..<5 {

    print("\(index)* 5 = \(index * 5)")

    }

    //其它运算符号

    var j = 10

    var k = 20

    var l = true

    var m = false

    print("j+k= \(j + k)")

    print("k-j= \(k - j)")

    print("三元运算:\(l?j : k)")

    print("三元运算:\(m?j : k)")

    //三元运算符条件是"?x:y",引号内的部分,如果添加为treue,值为x,否则为y

    /*1,运算符的优先级,指针最优先,单目运算优于双目运算,例如正负号

    2,先乘除(模),后加减

    3,先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于(1 <<(3 + 2))&7

    4,逻辑运算最后计算

    3和4暂时不懂,需要在查资料

    */

    var n = 0

    n = 2 + 3 * 4 / 6

    print(n)

    //上面表达示算法是3先乘以4在除6在加2等于4

    /*条件语句

    if语句:"由一个布尔表达式和一个或多个执行语句组成"

    内嵌if语句:"你可以在if或else if中内嵌if或else if语句。"

    switch语句:" switch语句允许测试一个变量等于多个值时的情况。"

    */

    var ab = 10//检测条件

    if ab < 20 {//如果条件语句为true,执行以下程序,if语句要带{}这种扩号

    print("ab小于20")

    }

    print("ab的变量值为\(ab)")

    //if...else :"else语句在布尔表达式为false时执行"

    var bc:Int = 30

    if bc > 100 {

    print("bc大于100")

    }else{

    print("bc小于100")

    }

    print("bc的变量为\(ab)")

    /*if...else if...else语句:"if后可以有可选的else if...else语句,else if...else语句常用于多个条件判断。"

    */

    var cd = 100

    if cd == 20 {

    print("cd的值等于20");

    } else if cd == 50 {

    print("cd的值等于50");

    } else {

    print("没有匹配的条件");

    }

    print("cd的值等于\(cd)")

    //switch语句的解释:switch就像是路由器,收到一个变量在去决定进行不同的操作,如果情况是1,那么值就是1,那就是case1。fallthrough,为连续运行的意思,因为swift默认不执行下去,其它的语言需要要case后面紧跟break,用break终止运行。

    var abc = 10

    switch abc{

    case 100 :

    print("abc的值为100")

    case 10,20 :

    print("abc的值为10或20")

    case 50 :

    print("abc的值为50")

    default :

    print("默认case")

    }

    print("abc的值为\(abc)")

    //下面的实例使用fallthrough

    var az = 100

    switch az {

    case 50 :

    print("az的值为50")

    fallthrough

    case 100,200 :

    print("az的值为100或200")

    fallthrough

    case 20 :

    print("az的值为20")

    default :

    print("默认case")

    }

    //swift for循环

    var someInts:[Int]=[10,20,30]

    for index in 0 ..< 3

    {

    print("索引[\(index)]对应的值为\(someInts[index])")

    }

    //swift字符串

    var StringA = ""

    if StringA.isEmpty {

    print("String是空的")

    }else{

    print("String不是空的")

    }

    var StringB = String()

    if StringB.isEmpty {

    print("StringB是空的")

    }else{

    print("String不是空的")

    }

    /*

    Swift支持以下几种字符串函数及运算符,函数/运算符&描述

    1

    isEmpty

    判断字符串是否为空,返回布尔值

    2

    hasPrefix(prefix: String)

    检查字符串是否拥有特定前缀

    3

    hasSuffix(suffix: String)

    检查字符串是否拥有特定后缀。

    4

    Int(String)

    转换字符串数字为整型。实例:

    let myString: String = "256"

    let myInt: Int?= Int(myString)

    5

    String.characters.count

    计算字符串的长度

    6

    utf8

    您可以通过遍历String的utf8属性来访问它的UTF-8编码

    7

    utf16

    您可以通过遍历String的utf8属性来访问它的UTF-16编码

    8

    unicodeScalars

    您可以通过遍历String值的unicodeScalars属性来访问它的Unicode标量编码.

    9

    +

    连接两个字符串,并返回一个新的字符串

    10

    +=

    连接操作符两边的字符串并将新字符串赋值给左边的操作符变量

    11

    ==

    判断两个字符串是否相等

    12

    <

    比较两个字符串,对两个字符串的字母逐一比较。

    13

    !=

    比较两个字符串是否不相等。

    */

    //字符串中插入值

    var varA = 10

    let letB = 20

    var varC = 40

    var varD = varA * letB - varC

    var varE = "\(varA)+ \(letB)- \(varC)"

    print(varD)

    print(varE)

    //字符串可以通过+号来连接

    let name2 = "youngxkk"

    let hi2 = "hellomike"

    var String2 = hi2 + name2

    print(String2)

    //字符串长度使用String.characters.count属性来计算,如下

    print("\(String2)的长度为\(String2.characters.count)")

    //?:运算符

    //条件运算符号?:可以用来代替if...else语句,他的一般形式如下:

    (myString != nil)?myString : myString;

    //myString是表达式,原文的“Exp1?Exp2 : Exp3;”报错,所以尝试了myString,

    /*其中,Exp1、Exp2和Exp3是表达式。请注意,冒号的使用和位置。

    ?表达式的值是由Exp1决定的。如果Exp1为真,则计算Exp2的值,结果即为整个?表达式的值。如果Exp1为假,则计算Exp3的值,结果即为整个?表达式的值。

    这个地方不理解,需要查资料

    */

    let decimalInteger = 23

    let binaryInteger = 0b10001

    let octalInteger = 0o21

    let hexadecimalInteger = 0x11

    let maxInt8: Int8 = Int8.max

    let minInt32: Int32 = Int32.min

    let twoThousand: UInt16 = 2000

    let one: UInt8 = 1

    let twoThousandAndOne = twoThousand + UInt16(one)

    //UInt8和UInt16是两个类型,不能直接相加,可以调用

    let integerPi = Int(pi)

    /*integerPi等于3,所以被推测为Int类型,

    当然使用此方法浮点数会被截断,小数点后面的都没了*/

    //类型别名

    typealias AudioSample = UInt16

    //定义好类型别名后,可以在使用使用原始名的地方使用别名

    var maxAmplitudeFound = AudioSample.min

    //maxAmplitudeFound现在是0

    //布尔值,只有两个true or false

    let orangesAreOrange = true

    let turnipsAreDelicious = false

    //下方是非常无比重要的条件语句:if语句,布尔值非常有用

    if turnipsAreDelicious {

    print("mum,tasty turnips")

    }else{

    print("Eww,turnips are horrible.")

    }

    //输出“Eww.turnips are horrible.”

    //下方是控制流使用for ..in ...语法

    for index in 1...6{

    print("\(index)times 6 is \(index * 2)")

    }

    let names =["mike","young","jack","mianmian"]

    for name in names {

    print("hello,\(names)")

    }

    //tuples元组把多个值组合成一个复合值,内可以是任何类型

    let http404error =(404,"not found")

    //一个类型为(Int,String)的元组

    let(statusCode,statusMessage)= http404error

    print("The status code is \(statusCode)")

    print("the statusMessage is \(statusMessage)")

    //元组的内容被分解成单独的常量和变量

    print("The status code is \(http404error.0)")

    print("the status message is \(http404error.1)")

    let http200Status =(statusCode: 200,description: "ok")

    print("The Status code is \(statusCode)")

    print("The Status code is \(http200Status.description)")

    //可以用元组中的命名,也可以用.0和.1来表示函数返回值

    //可选类型

    let possibleNumber = "123"

    let convertedNumber = Int(possibleNumber)

    var serverResponseCode: Int?= 404

    //serverResponseCode包含一个可选的Int值404

    serverResponseCode = nil

    var surveyAnswer: String?

    /*Swift的nil和Objective-C中的nil并不一样。在Objective-C中,nil是一个指向不存在对象的指针。在Swift中,nil不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为nil,不只是对象类型。*/

    //if语句以及强制解析

    //下方是获取设备信息及打印出来

    let mainBundle = NSBundle.mainBundle()

    let identifier = mainBundle.bundleIdentifier

    let info= mainBundle.infoDictionary

    let bundleId= mainBundle.objectForInfoDictionaryKey("CFbundleName")

    let version= mainBundle.objectForInfoDictionaryKey("CFBundleShortVersionString")

    print("identifier:\(identifier)")

    print("bundleId:\(bundleId)")

    print("version:\(version)")

    print("info:\(info)")

    //在statues bar上显示风火轮效果

    UIApplication.sharedApplication().networkActivityIndicatorVisible = true;

    var dic =[0:4,1:5,2:6,3:7]

    var newDic = dic

    //check dic and newdic

    dic[0]= 8

    dic

    newDic

    /*集合类型(Collection Types)

    Swift语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组(Arrays)是有序数据的集。集合(Sets)是无序无重复数据的集。字典(Dictionaries)是无序的键值对的集。

    */

    //arr是数组,dict是词典

    var array =[1,2,3,"hello","world",youngxkk,5,"6"]//其中的youngxkk为变量

    array[2]

    array[4]

    array[7]

    array[5]//多0开始,其中的第6个,是youngxkk,自动显示字符串

    //字典类型快捷语法Swift的字典使用Dictionary定义,其中Key是字典中键的数据类型,Value是字典中对应于这些键所存储值的数据类型。

    var dict =[10:"m",20:"i",30:"k",40:"e","mike":9]

    dict[10]

    dict[30]

    dict["mike"]

    //:-----------分割线------------,尝试一下HASH值,看有什么区别

    CFHash("world")

    CFHash(30)

    //创建数组,使用构造语法来创建一个由特定数据类型构成的空数组

    var someArray =[1,"hello"]

    print(1)

    let emptyArray =[String]()

    let emptyDictionary =[String: Float]()

    //创建一个带有默认值的数组

    var FourDoubles =[Double](count: 4,repeatedValue: 0.0)

    //FourDoubles是一种[Double]数组,等价于[0.0,0.0,0.0]

    //通过两个数组相加创建一个数组

    var anotherFourDoubles =[Double](count: 4,repeatedValue: 2.5)

    //anotherFourDoubles被推断为[Double],等价于[2.5,2.5,2.5]

    var eightDoubles = FourDoubles + anotherFourDoubles

    //eightDoubles被推断为[Double],等价于[0,0,0,0,2.5,2.5,2.5]

    //字面量构造数组

    var shoppingList:[String]=["eggs","fruits"]

    /*shoppoingLisr已经被构造,并且包含两个初始项。

    shoppingList数组被声明为变量(var)而不是常量(let),是因为以后可能会加入更多数据*/

    //访问和修改数组(这个数组有2个项)

    print("the shoppingList contains\(shoppingList.count)items.")

    //可以使用布尔值属性isEmpty作为检查count的属性是否为0的捷径

    if shoppingList.isEmpty{

    print("shoppingList is empty")

    }else{

    print("shoppinglist is not empty")}

    //也可以使用append(_:)的方法在数组后面添加新的数据项

    shoppingList .append("flour")

    shoppingList.append("apple")

    //除此之外,还可以使用加法赋值运算符+=直接在后面添加一个或多个数据项

    shoppingList +=["water","music"]

    //下面尝试一下使用下标语法来获取数据项,索引要放在中括号中

    var secondItem = shoppingList[1]

    //也可以使用下标来改变某个索引值对应的数据项

    shoppingList[2]= "orange"

    shoppingList[3...5]=["bananas","cook","coca"]

    print(shoppingList)

    //我们可以使用for-in循环来遍历数组中的数据项

    for items in shoppingList{

    print(items)

    }

    //Sets集合是指无序无重复数据的集

    //创建一个空的集合

    var letters = Set()

    print("letters is of type Set with \(letters.count)items.")

    //打印"letters is of type Set with 0 items."通过构造器,这里的letters变量的类型被推断为Set。

    var favoriteGenres: Set =["Rock","Classical","hiphop"]

    /*例子创建一个称之为favoriteGenres的集合来存储String类型的值:这个favoriteGenres变量被声明为“一个String值的集合”,写为Set。由于这个特定的集合含有指定String类型的值,所以它只允许存储String类型值。这里的favoriteGenres变量有三个String类型的初始值("Rock","Classical"和"Hip hop"),并以数组字面量的方式出现。

    */

    //集合操作你可以高效地完成Set的一些基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交.

    let oddDigits: Set =[1,3,5,7,9]

    let evenDigits: Set =[0,2,4,6,8]

    let singleDigitPrimeNumbers: Set =[2,3,5,7]

    oddDigits.union(evenDigits).sort()

    //[0,1,2,3,4,5,6,7,8,9]都包含

    oddDigits.intersect(evenDigits).sort()

    //[]交集之内

    oddDigits.subtract(singleDigitPrimeNumbers).sort()

    //[1,9]不在B里面的,只要A里面。

    oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()

    //[1,2,9]交集之外

    //While循环

    /*while循环从计算单一条件开始。如果条件为true,会重复运行一系列语句,直到条件变为false。

    下方是一个爬格子的游戏,有梯子和小蛇*/

    let finalSquare = 25

    var board =[Int](count: finalSquare + 1,repeatedValue: 0)

    board[03]= +08;board[10]= +02;board[06]= +11;board[09]= +09;

    board[14]= -10;board[19]= -11;board[22]= -02;board[24]= -08;

    var square = 0

    var diceRoll = 0

    while square < finalSquare {

    //掷骰子(diceRool)

    diceRoll += 1

    if diceRoll == 7 { diceRoll = 1 }

    //根据点数移动

    square += diceRoll

    if square < board.count {

    //如果玩家还在棋盘上,顺着梯子上去或者蛇滑下

    square += board[square]

    }

    }

    print("game over!")

    //下方是Repeat-While循环,finalsquare,board,square,diceRoll初始化值和while值相同

    /*

    repeat {

    //顺着梯子爬上去或者顺着蛇下来

    square += board[square]*此处报错,不知道为什么,暂时注销*

    //掷骰子

    diceRoll += 1

    if diceRoll == 7 { diceRoll = 1 }

    //根据点数移动

    square += diceRoll

    }while square < finalSquare

    print("game over!")

    */

    //条件语句,if语句,适用于简单的条件

    var temperature = 39

    if temperature < 40 {

    print("the temperature is cold")

    }

    if temperature < 32 {

    print("the temperature is very cole")

    }else if temperature >= 39 {

    print("the temperature is normal= 39")

    }

    //Switch语句,更适用于条件较复杂、可能情况较多且需要用到模式匹配(pattern-matching)

    /*switch some value to consider {

    case value 1:

    respond to value 1

    case value 2,

    value 3:

    repond to value 2 or value 3

    dafault:

    otherwise,do something else

    }

    */

    let someCharacter: Character = "e"

    switch someCharacter {

    case "a","e","o","u":

    print("\(someCharacter)is a vowel")

    case "b","n","v","p","i","t","r","c":

    print("\(someCharacter)is a consonant")

    default:

    print("\(someCharacter)is not a vowel or a consonant")

    }

    //switch和case的一些注意点,一个case可以包含多个模式,中间用逗号分开,冒号结尾:

    //case的分支的模式也可以是一个值的区间。

    let approximateCount = 99

    let countedThing = "moons orbiting Saturn"

    var naturalCount: String

    switch approximateCount {

    case 0:

    naturalCount = "no"

    case 1..<5:

    naturalCount = "a few"

    case 5..<12:

    naturalCount = "several"

    case 12..<100:

    naturalCount = "dozens of"

    case 100..<1000:

    naturalCount = "hundreds of"

    default:

    naturalCount = "many"

    }

    print("there are \(naturalCount)\(countedThing)")

    //输出"There are dozens of moons orbiting Saturn."

    //元组(Tuple)

    let somePoint =(1,1)

    switch somePoint {

    case(0,0):

    print("(0,0)is at the origin")

    case(_,0):

    print("(\(somePoint.0),0)is on the x-axis")

    case(0,_):

    print("(0,\(somePoint.1))is on the y-axis")

    case(-2...2,-2...2):

    print("(\(somePoint.0),\(somePoint.1))is inside the box")

    default:

    print("(\(somePoint.0),\(somePoint.1))is outside of the box")

    }

    //输出"(1,1)is inside the box"

    //字典重复学习

    var someDict:[Int:String]=[1:"one",2:"two",3:"three"]

    print(someDict[1])

    var someVar = someDict[1]

    print("key2的值为is \(someDict[2])")

    print("key1的值为\(someVar)")

    //函数(重点)

    func sayHello(person: String)-> String {

    let greeting = "Hello," + person + "!"

    return greeting

    }

    print(sayHello("mike"))

    /*重要的解释

    调用sayHello(_:)函数时,在圆括号中传给它一个String类型的实参,例如sayHello("Anna")。因为这个函数返回一个String类型的值,sayHello可以被包含在print(_:separator:terminator:)的调用中,用来输出这个函数的返回值,正如上面所示。

    在sayHello(_:)的函数体中,先定义了一个新的名为greeting的String常量,同时,把对personName的问候消息赋值给了greeting。然后用return关键字把这个问候返回出去。一旦return greeting被调用,该函数结束它的执行并返回greeting的当前值。

    你可以用不同的输入值多次调用sayHello(_:)。上面的例子展示的是用"Anna"和"Brian"调用的结果,该函数分别返回了不同的结果。

    为了简化这个函数的定义,可以将问候消息的创建和返回写成一句:

    */

    func sayHelloAgain(person: String)-> String {

    return "hello Again," + person + "!"

    }

    print(sayHelloAgain("Youngxkk"))

    //函数也可以有无参函数,例如下面这个

    func sayhelloworld()-> String {

    return "hello,wrold"

    }

    print(sayhelloworld())

    //无返回值函数

    func saygoodbye(personName: String){

    print("goodBye,\(personName)")

    }

    saygoodbye("Youngxkkk")

    ```

    相关文章

      网友评论

          本文标题:Swift 语言学习笔记_1

          本文链接:https://www.haomeiwen.com/subject/nyxswttx.html