您的位置:首页 > 移动开发 > Swift

swift笔记-基础部分

2015-06-11 21:23 656 查看
常量和变量:
  常量和变量必须在使用前声明,用let来声明常量,用var来声明变量
多个常量或者多个变量,用逗号隔开:
 var x = 0.0, y = 0.0, z = 0.0
给变量或指定类型:常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var welcomeMessage: String 
表示:
  声明一个类型为String,名字为welcomeMessage的变量,类型为String”的意思是“可以存储任意String类型的值。”
注意:
  一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型,请参考类型安全和类型推断。
   在上面的例子中,没有给welcomeMessage赋初始值,所以变量welcomeMessage的类型是通过一个类型标注指定的,而不是通过初始值推断的。 

 常量的值一旦被确定就不能更改了。

<code>  println</code>函数来输出当前常量或变量的值: 

<pre><code class="lang-swift"><span class="hljs-built_in">  println</span>(<span class="hljs-string">"This is a string"</span>) 

   Swift 用<em>字符串插值(string interpolation)</em>的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。
   将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:
</code><pre><code class="lang-swift"><span class="hljs-built_in">  println</span>(<span class="hljs-string">"The current value of friendlyWelcome is <span class="hljs-subst">\(friendlyWelcome)</span>"</span>);//</code><code class="lang-swift"><span class="hljs-comment"> 输出 "The current value of friendlyWelcome is Bonjour!</span></code><code class="lang-swift">

</code><pre><code class="lang-swift"><span class="hljs-comment">// 这是一个注释</span></code>
[code]/* 这是一个,
多行注释 */

Swift 提供了8,16,32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是
UInt8
,32位有符号整数类型是[code]Int32

就像 Swift 的其他类型一样,整数类型采用大写命名法。
[/code]
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
Float
表示32位浮点数。精度要求不高的话可以使用此类型。


类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可
类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用
typealias
关键字来定义类型别名。当你想要给现有类型起一个更有意义的名字时,类型别名非常有用。假设你正在处理特定长度的外部资源的数据:
[code]typealias AudioSample = UInt16

定义了一个类型别名之后,你可以在任何使用原始名的地方使用别名:
[code]var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound 现在是 0

本例中,
AudioSample
被定义为
UInt16
的一个别名。因为它是别名,
AudioSample.min
实际上是
UInt16.min
,所以会给
maxAmplitudeFound
赋一个初值
0
。Swift 有两个布尔常量,
true
false
:如果你在需要使用
Bool
类型的地方使用了非布尔值,Swift 的类型安全机制会报错。下面的例子会报告一个编译时错误:
[code]let i = 1
if i {
    // 这个例子不会通过编译,会报错
}

然而,下面的例子是合法的:
[code]let i = 1
if i == 1 {
    // 这个例子会编译成功
}

元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。如:
let http404Error = (404,
"Not Found")
你可以将一个元组的内容分解(decompose)成单独的常量和变量,然后你就可以正常使用它们了:
[code]let (statusCode, statusMessage) = http404Error
println("The status code is \(statusCode)")
// 输出 "The status code is 404"
println("The status message is \(statusMessage)")
// 输出 "The status message is Not Found"
如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(
_
)标记:
[code]let (justTheStatusCode, _) = http404Error
println("The status code is \(justTheStatusCode)")
// 输出 "The status code is 404"
此外,你还可以通过下标来访问元组中的单个元素,下标从零开始:
println("The status code is \(http404Error.0)")
// 输出 "The status code is 404"
println("The status message is \(http404Error.1)")
// 输出 "The status message is Not Found"
你可以在定义元组的时候给单个元素命名:
[code][code]let http200Status = (statusCode: 200, description: "OK")
给元组中的元素命名后,你可以通过名字来获取这些元素的值:
[code]println("The status code is \(http200Status.statusCode)")
// 输出 "The status code is 200"
println("The status message is \(http200Status.description)")
// 输出 "The status message is OK"
作为函数返回值时,元组非常有用。一个用来获取网页的函数可能会返回一个
(Int, String)
元组来描述是否获取成功。和只能返回一个类型的值比较起来,
一个包含两个不同类型值的元组可以让函数的返回信息更有用。请参考函数参数与返回值
注意:
元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。请参考类和结构体
可选类型(optionals)来处理值可能缺失的情况。可选类型表示:有值,等于 x 或者 没有值来看一个例子。Swift 的
String
类型有一个叫做
toInt
的方法,作用是将一个
String
值转换成一个
Int
值。然而,
并不是所有的字符串都可以转换成一个整数。字符串
"123"
可以被转换成数字
123
,但是字符串
"hello, world"
不行。
下面的例子使用
toInt
方法来尝试将一个
String
转换成
Int

[code]let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
因为
toInt
方法可能会失败,所以它返回一个可选类型(optional)
Int
,而不是一个
Int
。一个可选的
Int
被写作
Int?
而不是
Int

问号暗示包含的值是可选类型,也就是说可能包含
Int
值也可能不包含值。(不能包含其他任何值比如
Bool
值或者
String
值。只能是
Int
或者什么都没有。)[/code] [/code]

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: