2018-07-10swift4与swift 3.3 语法重拾(

2018-07-10  本文已影响14人  幸福晓杰2016

1.使用 let来声明一个常量,用 var来声明一个变量。
常量的值在编译时并不要求已知,但是你必须为其赋值一次。这意味着你可以使用常量来给一个值命名,然后一次定义多次使用。
常量或者变量必须拥有和你赋给它们的值相同的类型。不过,你并不需要总是显式地写出类型。在声明一个常量或者变量的时候直接给它们赋值就可以让编译器推断它们的类型。

如果初始值并不能提供足够的信息(或者根本没有提供初始值),就需要在变量的后边写出来了,用冒号分隔。

let implicitInteger = 70
let implicitDouble = 70.0 //默认是double类型
let explicitDouble: Double = 70
let explicitFloat : Float = 70.0

变量值绝对不会隐式地转换为其他类型。如果你需要将一个值转换为不同的类型,需要使用对应的类型显示地声明。如下列例子中的String(width)

let label = "The width is "
let width = 94
let widthLabel = label + String(width)

String(width)可以简写成(width)
为字符串使用三个双引号( """ )来一次输入多行内容
只要每一行的缩进与末尾的引号相同,这些缩进都会被移除。比如说:

//被移除缩进
let quotation = """
  I said "I have \(apples) apples."
  And then I said "I have \(apples + oranges) pieces of fruit."
  """
//这个缩进不会被移除
let quotation = """
  I said "I have \(apples) apples."
  And then I said "I have \(apples + oranges) pieces of fruit."
"""

2.使用方括号( [])来创建数组或者字典,并且使用方括号来按照序号或者键访问它们的元素。
注意:方括号可以用创建字典了

var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
 
var occupations = [
    "Malcolm": "Captain",
    "Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"

使用初始化器语法来创建一个空的数组或者字典。

let emptyArray = [String]()
let emptyDictionary = [String: Float]()

如果类型信息能被推断,那么你就可以用[]来表示空数组,用[:]来表示空字典。举个栗子,当你给变量设置新的值或者传参数给函数的时候。

shoppingList = []
occupations = [:]

3.使用 if和 switch来做逻辑判断,使用 for-in, for, while,以及 repeat-while来做循环。使用圆括号把条件或者循环变量括起来不再是强制的了,不过仍旧需要使用花括号来括住代码块。
ps:可以不要小括号了,但是大括号必须需要

在一个 if语句当中,条件必须是布尔表达式——这意味着比如说 if score {...}将会报错,不再隐式地与零做计算了。
ps: 注意这里不再默认 :隐式地与零做比较了

Switch 选择语句支持任意类型的数据和各种类型的比较操作——它不再限制于整型和测试相等上。
删除default 会报错 Switch must be exhaustive 表示switch 语句不够完整

let vegetable = "red pepper"
switch vegetable {
case "celery":
    print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
    print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper")://注意 let 可以用在模式里来指定匹配的值到一个常量当中。下面就指到了常量x里面
    print("Is it a spicy \(x)?")
default:
    print("Everything tastes good in soup.")
}

在执行完 switch 语句里匹配到的 case 之后,程序就会从 switch 语句中退出。执行并不会继续跳到下一个 case 里,所以完全没有必要显式地在每一个 case 后都标记 break 。
ps :switch 里面break全部省略掉了。

你可以使用 for-in来遍历字典中的项目,这需要提供一对变量名来储存键值对。一对变量名就可以了,不用指定类型

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 99, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (_, numbers) in interestingNumbers {
//上面这句话可以改写成for (kind, numbers) in都是可行,因为这个变量从没有用过,所以可以使用下划线
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
print(largest)

使用 ..<来创建一个不包含最大值的区间,使用 ... 来创造一个包含最大值和最小值的区间。

var total = 0
for i in 0..<4 {
    total += i
    print(i)
}

for i in 0...4 {
    total += i
    print(i)
}
上一篇 下一篇

猜你喜欢

热点阅读