swift学习笔记

1、值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换。

 let label = "The width is" 
 let width = 94 
 let widthLabel = label + String(width) <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
删除最后一行中的 String,错误提示:

Could not find an overload for '+' that accepts the supplied arguments

2、switch 支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。 

 let vegetable = "red pepper" 
 switch vegetable { 
 case "celery": 
 let vegetableComment = "Add some raisins and make ants on a log." 
 case "cucumber", "watercress": 
 let vegetableComment = "That would make a good tea sandwich." 
 case let x where x.hasSuffix("pepper"): 
 let vegetableComment = "Is it a spicy \(x)?" 
 default: 
 let vegetableComment = "Everything tastes good in soup." 
 } 
删除 default 语句,报错 
 Switch must be exhaustive, consider adding a default clause
运行 switch 中匹配到的子句之后,程序会退出 switch 语句,并不会继续向下运行,所以不

需要在每个子句结尾写 break。 

3、

常量和变量的命名

你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符:

 
 
  1. let π = 3.14159 
  2. let 你好 = "你好世界" 
  3. let ???????? = "dogcow" 

常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。

4、

输出常量和变量

你可以用println函数来输出当前常量或变量的值:

 
 
  1. println(friendlyWelcome) 
  2. // 输出 "Bonjour!" 

println是一个用来输出的全局函数,输出的内容会在最后换行。如果你用 Xcode,println将会输出内容到“console”面板上。(另一种函数叫print,唯一区别是在输出内容最后不会换行。)

5、

数值型字面量

整数字面量可以被写作:

 

- 一个十进制数,没有前缀

- 一个二进制数,前缀是0b

- 一个八进制数,前缀是0o

- 一个十六进制数,前缀是0x

 

下面的所有整数字面量的十进制值都是17:

 
 
  1. let decimalInteger = 17 
  2. let binaryInteger = 0b10001       // 二进制的17 
  3. let octalInteger = 0o21           // 八进制的17 
  4. let hexadecimalInteger = 0x11     // 十六进制的17 

浮点字面量可以是十进制(没有前缀)或者是十六进制(前缀是0x)。小数点两边必须有至少一个十进制数字(或者是十六进制的数字)。浮点字面量还有一个可选的指数(exponent),在十进制浮点数中通过大写或者小写的e来指定,在十六进制浮点数中通过大写或者小写的p来指定。

 

如果一个十进制数的指数为exp,那这个数相当于基数和$10^{exp}$的乘积:

 

1.25e2 表示 $1.25 × 10^{2}$,等于 125.0。

1.25e-2 表示 $1.25 × 10^{-2}$,等于 0.0125。

 

如果一个十六进制数的指数为exp,那这个数相当于基数和$2^{exp}$的乘积:

 

0xFp2 表示 $15 × 2^{2}$,等于 60.0。

0xFp-2 表示 $15 × 2^{-2}$,等于 3.75。

6、

可选

使用可选(optionals)来处理值可能缺失的情况。可选表示:

 

-有值,等于 x

 

或者

 

没有值

 

注意:C 和 Objective-C 中并没有可选这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选可以让你暗示任意类型的值缺失,并不需要一个特殊值。

 

来看一个例子。Swift 的String类型有一个叫做toInt的方法,作用是将一个String值转换成一个Int值。然而,并不是所有的字符串都可以转换成一个整数。字符串"123"可以被转换成数字123,但是字符串"hello, world"不行。

 

下面的例子使用toInt方法来尝试将一个String转换成Int:

 
 
  1. let possibleNumber = "123" 
  2. let convertedNumber = possibleNumber.toInt() 
  3. // convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int" 

因为toInt方法可能会失败,所以它返回一个可选的(optional)Int,而不是一个Int。一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选,也就是说可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什么都没有。)

7、 不像C语言,Swift 允许多个case匹配同一个值。但是,如果存在多个匹配,那么只会执行第一个被匹配到的case块。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值