swift 初见-2
直接上代码:
// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // 使用if ,switch 来进行条件操作 ,for-in , for ,while ,do-while 进行循环操作 // 特点:包裹条件和循环变量括号可以省略,但是语句体的大括号是必须得 let scores=[89,79,100,99] var teamSecore=0; // 换为var teamSecore:Float/Double=0;也会出现同样的错误 for score in scores { // 大括号是必须的 teamSecore+=score } // if语句条件必须是一个布尔表达式 // 可以使用if和let 来处理变量,变量可能是具体的值或者nil,表示值缺失.此时在类型后面加一个问号?来标记这个变量的值是可选的 var optionalString:String?="hello" var optionalSteing1:String? optionalString=nil let name1="hellos" println(optionalString==nil) // 下面这种写法是错误的,想要赋值为空,需要使用“?”来标记 // var gender = "男" // gender = nil if let name=optionalString // 给name 赋值判断name是否为空 { println(name+optionalString!) println(name==optionalString) } // 数据类型别名定义 熟知的typedef 变为了 typealias typealias kAnd=String // 作用域在定义之后 var num=100; println(kAnd(num)) // 相当于String(num) // let wiseWords = "\"Imagination is more important than knowledge\" - Einstein" println(wiseWords) //""Imagination is more important than knowledge" - Einstein" var emptyString = "" // empty string literal var anotherMethod = String() // initializer syntax // 在swift中字符串不是指针,而是实际的值,因此,在Swift中,一个String类型就是一个实际的值,当定义一个新的String,并且将之前的String值拷贝过来的时候,是实际创建了一个相等的新值,而不是仅仅像指针那样指向过去。同样在函数传递参数的时候,也是传递的实际值,并且创建了一个新的字符串,后续的操作都不会改变原有的String字符串。 let yenSign: Character = "¥" // for循环遍历每个字符 for character in "Dog!" { println(character) } for characters in wiseWords { println(characters) } // 字符串长度的统计,可以使用全局函数countElements可以计算一个字符串中字符的数量,这点与其它语言length有点不同。 let unusualMenagerie = "Koala , Snail , Penguin , Dromedary " println("unusualMenagerie has \(countElements(unusualMenagerie)) characters") //待验证1: 字符串与单个字符,可以使用+,+=操作将字符串和字符串接在一起 (有的说可以但是我试了,有时报错,但有时又没有错??,难道我的编译器有问题???,谁试了可以给个示例,谢谢) var stringAppend=unusualMenagerie+wiseWords //两个String类型的相加 var aChar:Character="a"
// stringAppend+=aChar //这句话在某些情况下是编译正确的,没有报错,但是结果不正确 ,某些情况下报如下错误 ,所以说待验证1的说法很大可能是错误的把
println(stringAppend) // 字符串比较使用 == let quotation = "We're a lot alike, you and I." let sameQuotation = "We're a lot alike, you and I." if quotation == sameQuotation { println("These two strings are considered equal") } // 待验证2: 这是其他博客的代码,下面这些代码并没有通过编译啊 /* 字符串常量可以包括下面这些特殊字符: 空字符\0,反斜杠\,制表符\t,换行符\n,回车符\r,双引号\”和单引号\’ 单字节Unicode字符,\xnn,其中nn是两个十六进制数 双字节Unicode字符,\unnnn,其中nnnn是四个十六进制数 四字节Unicode字符,\Unnnnnnnn,其中nnnnnnnn是八个十六进制数 示例: let wiseWords = "\"Imagination is more important than knowledge\" - Einstein" // "Imagination is more important than knowledge" - Einstein let dollarSign = "\x24" // $, Unicode scalar U+0024 let blackHeart = "\u2665" // ♥, Unicode scalar U+2665 let sparklingHeart = "\U0001F496" // , Unicode scalar U+1F496 */ /* swift还保留了oc中的前后缀函数hasPrefix和hasSuffix 大小写字符串使用uppercaseString 和 lowercaseString unicode : Swift 支持多种不同的方式取得Unicode字符串. 你可以使用for-in语句遍历字符串,来获得每一个字符的Unicode编码值。这个过程已经在字符(Working with Characters)描述过了。 或者,下面三个描述中使用合适的一个来获得一个字符串的值 UTF-8字符编码单元集合使用String类型的utf-8属性 UTF-16字符编码单元集合使用String类型的utf-16属性 21位Unicode标量集合使用String类型的unicodeScalars属性 */ let testUncode = "Dog!狗" for codeUnit in testUncode.utf8 { print("\(codeUnit) ") } print("\n") // 68 111 103 33 231 139 151 for codeUnit in testUncode.utf16 { print("\(codeUnit) ") } print("\n") // 68 111 103 33 29399 for scalar in testUncode.unicodeScalars { print("\(scalar.value) ") } print("\n") // 68 111 103 33 29399 // 在utf-8中,中文的"狗"占三个字节,而在utf-16 及标量(utf-32)中正好可以一个字节就装得下。 // 很多博客中写的是 let emptyArray = String[]() 这里纠正一下是不正确的的 var emptyArray = [String]() emptyArray.insert("哈哈", atIndex:0) //可变数组啊,let 和var 才是决定是否可变的要素 println(emptyArray[0]) // 不需要指字类型,则数组可以直接使用"[ ]" 字典[:] var otherArray=[]; otherArray.indexOfObject("hello") // 竟然不会报错,但是这明显是错误的写法啊 println(otherArray) var dic=[:]
上面这些代码是我综合网上的写下来的,有些还需验证,希望路过的指教一下哈.