在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 定义常量和变量 a. Swift语法 常量: let MaxNumber = 10
变量: var name = 1
b. Java语法 常量: public final int MaxNumber= 10; 变量: public String name = "morden";
这里要注意的是swift有类型标注(type annotation)这个语法:如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。但是因为swift编译器可以进行类型安全判定,所以一般为了代码简练, 可以不加类型标注,关于类型标注,后面会有提到。加类型标注的语法如下: 常量: let MaxNumber :Int = 10
变量: var name : String = "morden" 常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。 2. Swift和Java的输出语法 Swift: print("hello world") Java System.out.println("hello world"); 3. 注释 Swift和Java注释大体相同,都可以单行注释和多行注释。唯一不同点就是Swift支持多行注释可以嵌套在其它的多行注释中。 /* 这是第一个多行注释的开头 /* 这是第二个被嵌套的多行注释 */ 这是第一个多行注释的结尾 */ 4. 分号 Java要求每一行代码都有分号,而Swift不同,不要求每一行必须有分号,但是一种情况除外:当在同一行内写多条独立的语句时候,每个语句需要分号隔开 let apple : String = "apple" ; print("hello world"); 5. 类型标注 类型标注:在Swift中,每次声明常量和变量的时候,不是一定要显式指定类型。如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。Swift 和Java都是一个类型安全(type safe)的语言。如果你申明的变量是String类型的时候,再对其进行赋值时候,传了int类型,编译器会报错。但是在语法上,这两个语言有所不同。 Java一般申明变量时候,会将类型放在前面,如下代码: String name = "morden";
Swift会将类型放在后面,如下代码: var name : String = "morden"
而有时候,我们申明变量时候,不加类型,编译器就会自己推断变量类型,这就是类型标注 在Swift中,具体类型标注代码如下: let number = 42
number
let anotherNumber = 3 + 0.14159 原始值 anotherNumber 没有显式声明类型,而表达式中出现了一个浮点字面量,所以表达式会被推断为 6. 数值型字面量 Swift和Java在数值型字面量方面有很多异同,只有十进制和16进制表示是相同的。 Swift:
Java:
另外,Swift数值类字面量可以包括额外的格式来增强可读性。整数和浮点数都可以添加额外的零并且包含下划线,并不会影响字面量: let paddedDouble = 000123.456 let oneMillion = 1_000_000 let justOverOneMillion = 1_000_000.000_000_1 7. 整数和浮点数转换 Swift:Swift中不支持隐式转换,当两个变量存储不同范围的值时候,所以你必须根据不同情况选择性使用数值型类型转换。代码如下: let three = 3 let pointOneFourOneFiveNine = 0.14159 let pi = Double(three) + pointOneFourOneFiveNine 这个例子中,常量 Java支持隐式转换,代码如下: int three = 3; double pointOneFourOneFiveNine = 0.14159; double pi = three + pointOneFourOneFiveNine; Swift语法支持类型别名,这点Java不支持,当在编程中,定义了一个类型别名之后,你可以在任何使用原始名的地方使用别名。具体代码如下: typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
UInt16 取值范围是0-255
8. 布尔值 Swift的布尔(Boolean)类型,关键字叫做 Swift: let flag : Bool = false if flag{ print("Mmm, tasty turnips!") }else{ print("Eww, turnips are horrible.") } Java: boolean flag = true; if(flag){ System.out.println("Mmm, tasty turnips!"); }else{ System.out.println("Eww, turnips are horrible."); } 9. key-value Swift提出了一个非常有意思的语法叫元组。有点类似Java的map数据结构,但是又与map有非常大的不同。这里介绍下元组的用法。 let http404Error = (404, "Not Found")
可以将一个元组的内容分解(decompose)成单独的常量和变量,然后你就可以正常使用它们: print(statusCode) print("The status code is \(http404Error.0)") print("The status code is \(http404Error.statusCode)") print(statusMessage) print("The status code is \(http404Error.1)") print("The status code is \(http404Error.description)") 10. 可选类型(optionals) 我们先看下面一段代码: let possibleNumber = "123" let convertedNumber = possibleNumber.toInt() // convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int" 因为 当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号( let possibleNumber = "123" let convertedNumber=Int(possibleNumber); let stee = convertedNumber! //stee 是Int,不是Int? 可选绑定(optional binding):来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。看下面代码: let possibleNumber = "123" if let actualNumber = Int(possibleNumber) { print("\(actualNumber) has an integer value of \(actualNumber)") } else { print("\(possibleNumber) could not be converted to an integer") } // 输出 "123 has an integer value of 123" “如果 如果转换成功, 11. nil 在 Swift 中, var serverResponseCode: Int? = 404 // serverResponseCode 包含一个可选的 Int 值 404 serverResponseCode = nil // serverResponseCode 现在不包含值 var surveyAnswer: String? // surveyAnswer 被自动设置为 nil 12. 隐式解析可选类型 隐式解析可选类型(implicitly unwrapped optionals)。把想要用作可选的类型的后面的问号( 一个隐式解析可选类型其实就是一个普通的可选类型,但是可以被当做非可选类型来使用,并不需要每次都使用解析来获取可选值。下面的例子展示了可选类型 let possibleString: String? = "An optional string." println(possibleString!) // 需要惊叹号来获取值 // 输出 "An optional string." let assumedString: String! = "An implicitly unwrapped optional string." println(assumedString) // 不需要感叹号 // 输出 "An implicitly unwrapped optional string." 注意: 13. 断言 断言会在运行时判断一个逻辑条件是否为 如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。 你可以使用全局 let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发 当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:
参考链接: http://special.csdncms.csdn.net/the-swift-programming-language-in-chinese/Introduction/template/chapter2/01_The_Basics.html |
请发表评论