[绍棠_swift] swift的简单学习(字符串、4元组、类型转换及运算)

来源:互联网 发布:garageband知乎 编辑:程序博客网 时间:2024/05/21 02:48



func swiftLearn1() {

    // 一、字符串

    var string1 ="hello"

    string1 +="you"

    var string2 =" there"

    let  r1:Character ="!"

    var  r2:Character ="?"

    var stringPlusCharacter = string1+"\(r1)"

    

    let str_1 ="heallo"

    let str_2 ="you"

    let str_3 ="\(str_1)"+" "+"\(str_2)"

    print(str_3)

    

    let name ="小明"

    let age = 10

    let result ="\(name)的年龄是\(age)岁!"

    print(result);

    

    // 字符串可以通过传递一个值类型为Character的数组作为自变量来初始化:

    let catCharacters: [Character] = ["C""a""t""!"]

    let catString = String(catCharacters)

    print(catString)

    

    let string4 = "hello"

    let string5 = " there"

    var welcome = string4 + string5

    // welcome 现在等于 "hello there"

    // 您也可以通过加法赋值运算符 (+=) 将一个字符串添加到一个已经存在字符串变量上:

    

    var instruction = "look over"

    instruction += string5

    // instruction 现在等于 "look over there"

    // 您可以用append()方法将一个字符附加到一个字符串变量的尾部:

    

    let exclamationMark: Character = "!"

    welcome.append(exclamationMark)

    // welcome 现在等于 "hello there!"

    

    // 二、4元组

    let tup1 = (age:21, name:"Coco", gender:18, hight:1.68)  //带元数名称

    let tup2 = (21,"Tom", 18, 1.68)     // 省略元素名称

    

    var tup3:(Int,String) = (1,"hello")  //指定类型。(指定类型后就不能再写元素名称了)

    

    var (t1, t2) = tup3    //两个变量接收元组

    var (_, t3) = tup3     //只接收一个

    

    /*

     当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int String类型的值可以比较,所以类型为 (Int, String)的元组也可以被比较。相反,Bool不能被比较,也意味着存有布尔类型的元组不能被比较。

     比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如:

     (1, "zebra") < (2, "apple")   // true,因为 1小于 2

     (3, "apple") < (3, "bird")    // true,因为 3等于 3,但是 apple小于 bird

     (4, "dog") == (4, "dog")      // true,因为 4等于 4dog等于 dog

     */

    

    // 三、可选(要么返回该值,要么为nil

    var possibleNumber ="123"

    var convertedNumber:Int? =Int(possibleNumber)     //转换可能失败(在类型后面加?表示可选)

    

    var possibleStr:Int = 1

    var convertedString:String? =String(possibleStr)

    var convertedFloat:CGFloat =CGFloat(possibleStr)

    

    if convertedNumber !=nil {

        print("convertedNumber的值为\(convertedNumber!)")

    }

    iflet my = convertedNumber {

        print("这是可选绑定!\(my)")

    }

    /// OCnil指向一个不存在的对象,而swiftnil不是指针,而是一个缺省值

    // possibleNumber = nil // 普通的变量是不能赋值为nil

    // convertedNumber = nil  //可选类型能赋值为nil,当没有值时,自动赋值为nil

    

    

    // 四、类型转换

    // 1 类型转换

    let e1 = 1

    let e2 = 0.12

    //        let e3 = e1 + e2  // 错误,类型不同不能直接相加

    let e3 =Double(e1) + e2

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

    

    // 2 类型别名 typealias,类型别名就相当于C中的typedef

    typealias BYInt =Int

    let testInt:BYInt = 10

    

    // 五、范围运算符 ..<...

    for index1in 1...10 {         // 表示闭包[1 10]

        print("index1\(index1)")

    }

    

    for index2in 1..<10 {         //表示半闭包[1 10)

        print("index2的值\(index2)")

        if index2 == 4 {

            break

        }

    }

    

    // 六、switch语句

    /*

     1)与c语言中的不同.不必每个case下写break,自动break

     2)每个case后面必须有可执行语句,否则会报错

     3)每个case都可以匹配多个条件,也可以填写一个范围

     4switch要保证处理所有的情况,一定加上default.

     5case还可以匹配元祖

     */

    let score = 10

    switch score {

    case 0...3:

        print("")

    case 4,5,6,7:

        print("")

    case 8...10:

        print("")

    default:

        print("开挂了")

    }

    // 七、溢出运算符

    // 1溢出运算符(处理数据溢出的情况)

    //        &+溢出加 &-溢出减

    let f1 =uint.max

    //        let f2 = f1+1     // 这样写会上溢

    let f2 = f1 &+ 1   //溢出加,值为0,变为溢出后的最小值

    print("f2的值\(f2)")

    

    // 八、一元负号运算符(数值的正负号可以使用前缀 -(即一元负号)来切换:)

    let three = 2

    let minusThree = -three    // -2

    let pluseThree = -minusThree   // 2

    // Warning:- 一元负号(-)写在操作数之前,中间没有空格

    

    // 九、一元正号运算符(一元正号(+)不做任何改变地返回操作数的值)

    let minusSix = -6

    let alsoMinusSix = +minusSix       // alsoMinusSix = -6

    

    /// 比较运算符(Swift也提供恒等(===)和不恒等(!==))

    

    // 十、三目运算符与空合运算符

    // 三目运算符

    let contentHeight = 40

    let hasHeader =true

    let rowHeight = contentHeight + (hasHeader ? 50 : 20)

    

    // 空合运算符

    /*

     空合运算符(a ?? b)将对可选类型 a进行空判断,如果 a包含一个值就进行解封,否则就返回一个默认值 b。表达式 a必须是 Optional类型。默认值 b的类型必须要和 a存储值的类型保持一致。

     空合运算符是对以下代码的简短表达方法:

     a != nil ? a! : b

     上述代码使用了三目运算符。当可选类型 a的值不为空时,进行强制解封(a!),访问 a中的值;反之返回默认值 b

     */

    let defaultColorName ="red"

    var userDefinedColorName:String?  //默认值为 nil

    

    var colorNameToUse = userDefinedColorName ?? defaultColorName

    // userDefinedColorName的值为空,所以 colorNameToUse的值为 "red"

    

    userDefinedColorName = "green"

    colorNameToUse = userDefinedColorName ?? defaultColorName

    // userDefinedColorName非空,因此 colorNameToUse的值为 "green"

    

}


func swiftLearn1() {

    // 一、字符串

    var string1 ="hello"

    string1 +="you"

    var string2 =" there"

    let  r1:Character ="!"

    var  r2:Character ="?"

    var stringPlusCharacter = string1+"\(r1)"

    

    let str_1 ="heallo"

    let str_2 ="you"

    let str_3 ="\(str_1)"+" "+"\(str_2)"

    print(str_3)

    

    let name ="小明"

    let age = 10

    let result ="\(name)的年龄是\(age)岁!"

    print(result);

    

    // 字符串可以通过传递一个值类型为Character的数组作为自变量来初始化:

    let catCharacters: [Character] = ["C""a""t""!"]

    let catString = String(catCharacters)

    print(catString)

    

    let string4 = "hello"

    let string5 = " there"

    var welcome = string4 + string5

    // welcome 现在等于 "hello there"

    // 您也可以通过加法赋值运算符 (+=) 将一个字符串添加到一个已经存在字符串变量上:

    

    var instruction = "look over"

    instruction += string5

    // instruction 现在等于 "look over there"

    // 您可以用append()方法将一个字符附加到一个字符串变量的尾部:

    

    let exclamationMark: Character = "!"

    welcome.append(exclamationMark)

    // welcome 现在等于 "hello there!"

    

    // 二、4元组

    let tup1 = (age:21, name:"Coco", gender:18, hight:1.68)  //带元数名称

    let tup2 = (21,"Tom", 18, 1.68)     // 省略元素名称

    

    var tup3:(Int,String) = (1,"hello")  //指定类型。(指定类型后就不能再写元素名称了)

    

    var (t1, t2) = tup3    //两个变量接收元组

    var (_, t3) = tup3     //只接收一个

    

    /*

     当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int String类型的值可以比较,所以类型为 (Int, String)的元组也可以被比较。相反,Bool不能被比较,也意味着存有布尔类型的元组不能被比较。

     比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如:

     (1, "zebra") < (2, "apple")   // true,因为 1小于 2

     (3, "apple") < (3, "bird")    // true,因为 3等于 3,但是 apple小于 bird

     (4, "dog") == (4, "dog")      // true,因为 4等于 4dog等于 dog

     */

    

    // 三、可选(要么返回该值,要么为nil

    var possibleNumber ="123"

    var convertedNumber:Int? =Int(possibleNumber)     //转换可能失败(在类型后面加?表示可选)

    

    var possibleStr:Int = 1

    var convertedString:String? =String(possibleStr)

    var convertedFloat:CGFloat =CGFloat(possibleStr)

    

    if convertedNumber !=nil {

        print("convertedNumber的值为\(convertedNumber!)")

    }

    iflet my = convertedNumber {

        print("这是可选绑定!\(my)")

    }

    /// OCnil指向一个不存在的对象,而swiftnil不是指针,而是一个缺省值

    // possibleNumber = nil // 普通的变量是不能赋值为nil

    // convertedNumber = nil  //可选类型能赋值为nil,当没有值时,自动赋值为nil

    

    

    // 四、类型转换

    // 1 类型转换

    let e1 = 1

    let e2 = 0.12

    //        let e3 = e1 + e2  // 错误,类型不同不能直接相加

    let e3 =Double(e1) + e2

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

    

    // 2 类型别名 typealias,类型别名就相当于C中的typedef

    typealias BYInt =Int

    let testInt:BYInt = 10

    

    // 五、范围运算符 ..<...

    for index1in 1...10 {         // 表示闭包[1 10]

        print("index1\(index1)")

    }

    

    for index2in 1..<10 {         //表示半闭包[1 10)

        print("index2的值\(index2)")

        if index2 == 4 {

            break

        }

    }

    

    // 六、switch语句

    /*

     1)与c语言中的不同.不必每个case下写break,自动break

     2)每个case后面必须有可执行语句,否则会报错

     3)每个case都可以匹配多个条件,也可以填写一个范围

     4switch要保证处理所有的情况,一定加上default.

     5case还可以匹配元祖

     */

    let score = 10

    switch score {

    case 0...3:

        print("")

    case 4,5,6,7:

        print("")

    case 8...10:

        print("")

    default:

        print("开挂了")

    }

    // 七、溢出运算符

    // 1溢出运算符(处理数据溢出的情况)

    //        &+溢出加 &-溢出减

    let f1 =uint.max

    //        let f2 = f1+1     // 这样写会上溢

    let f2 = f1 &+ 1   //溢出加,值为0,变为溢出后的最小值

    print("f2的值\(f2)")

    

    // 八、一元负号运算符(数值的正负号可以使用前缀 -(即一元负号)来切换:)

    let three = 2

    let minusThree = -three    // -2

    let pluseThree = -minusThree   // 2

    // Warning:- 一元负号(-)写在操作数之前,中间没有空格

    

    // 九、一元正号运算符(一元正号(+)不做任何改变地返回操作数的值)

    let minusSix = -6

    let alsoMinusSix = +minusSix       // alsoMinusSix = -6

    

    /// 比较运算符(Swift也提供恒等(===)和不恒等(!==))

    

    // 十、三目运算符与空合运算符

    // 三目运算符

    let contentHeight = 40

    let hasHeader =true

    let rowHeight = contentHeight + (hasHeader ? 50 : 20)

    

    // 空合运算符

    /*

     空合运算符(a ?? b)将对可选类型 a进行空判断,如果 a包含一个值就进行解封,否则就返回一个默认值 b。表达式 a必须是 Optional类型。默认值 b的类型必须要和 a存储值的类型保持一致。

     空合运算符是对以下代码的简短表达方法:

     a != nil ? a! : b

     上述代码使用了三目运算符。当可选类型 a的值不为空时,进行强制解封(a!),访问 a中的值;反之返回默认值 b

     */

    let defaultColorName ="red"

    var userDefinedColorName:String?  //默认值为 nil

    

    var colorNameToUse = userDefinedColorName ?? defaultColorName

    // userDefinedColorName的值为空,所以 colorNameToUse的值为 "red"

    

    userDefinedColorName = "green"

    colorNameToUse = userDefinedColorName ?? defaultColorName

    // userDefinedColorName非空,因此 colorNameToUse的值为 "green"

    

}


原创粉丝点击