Swift-简单值

来源:互联网 发布:淘宝达人申请大v认证 编辑:程序博客网 时间:2024/05/16 07:03

一直都觉得 Swift 有很多地方都没有 Objective-C 好(此时此刻仍是这么觉得),所以打心眼里不想学 Swift。但是师父已经开始逐步把我们公司的项目转成 Swift 了...于是我也决定(其实是为形势所迫),从今天起利用闲暇时间自学 Swift。如果有一天 Swift 真的完全替代了 OC,我会很难过。。。


使用 let 声明常量,var 声明变量。比如声明一个 Int 类型的变量 a,初始值为 3:

var a : Int = 3

(每句结束不用写分号,这勉强算优点之一吧)


在 Swift 中,编译器会自动推断类型。比如:

var a = 3


虽然我们没有声明 a 的类型,但是 a = 3,所以编译器会推断出 a 是整型。但是下面这样是不行的:


如果像上面这样,既没有赋初值,也没有声明类型,即使之后有可以推断类型的地方,还是会报错。


注意:一个常量或者变量的类型是不能改变的。比如下面这样会报错:


编译器已经推断出 a 是整型的,但是不会再次推断然后把 a 变成 Float 类型的哦~


注意:值永远不会被隐式转换为其它类型。如果你需要把一个值转换成其它类型,请显式转换
什么是隐式转换?比如这样:


根据上面所说的,编译器会自动推断出 str1 是字符串,str2 是整数。现在我们想让 str3 显示 "The width is 100"。如果值可以被隐式转换的话,那么在计算 str1 + str2 的时候,str2 就会被自动转换成字符串。显然在此处不可以,编译器报错了。所以我们需要显式转换。比如:

let str1 = "The width is "let str2 = 100let str3 = str1 + String(str2)

String(str2) 就是显式转换,我们把整型的 str2 转换成了字符串类型。现在就可以用 ' + ' 来连接两个字符串了。如果用 print(str3) 来打印 str3,输出结果是 "The width is 100"。


除此之外还有另一种方法可以把一个数转化为字符串:把值写到括号中,并在括号之前写一个反斜杠。看代码:

let str1 = "The width is "let str2 = 100//let str3 = str1 + String(str2)let str3 = str1 + "\(str2)"
注意:此时需要加引号,对比一下,String(str2) 转换以后是不需要加引号的。

let name = 3.4var greeting = "Hello \(name)! How are you?"greeting = "Hello " + String(name) + "! How are you?"

在上面这种情况下,显然 \ ( ) 这种方式更简单一些,因为后者要多写几个引号~


另外我发现了一句挺有意思的代码:

var d = ()
我猜测它可能和下面这个一样:

var d = Void()


但是在文档中,比如 String 有 () 这种构造方法:


我们可以它用来初始化一个空字符串:

var str = String()

然而 Void 却没有:


那么为什么也能用 var d = () 或者 var d = Void() 呢???这个问题我还不知道答案,留待以后解决~


如果有一天 Swift 真的完全替代了 OC,我会很难过。。。





1 0