美文网首页
swift学习随笔 Day2

swift学习随笔 Day2

作者: RadioHeadache | 来源:发表于2017-03-02 00:56 被阅读13次

严格和松散

swift不会进行隐式转换, 两个变量要进行计算的时候,一定要是相同的类型。swift对于类型要求特别严格。

例如:不能让一个整型和浮点型相加

可以进行显式转换

let num1 = 1
let num2 = 1.5
let num3 = num1 + num2 //是错误的

//进行强制类型转换
let num4 = Double(num1) + num2

自动推导

swift可以根据右边的值自动推导变量/常量的类型

let a = 1 
let b = 2.1

//自己定义类型
let i: CGFloat = 10.1

if分支

if

let num = 20

if num > 10 {
    print("大")
}
  1. if没有小括号
  2. 必须有花括号
  3. swift中,只有TRUE和FALSE,没有“非零即真”

例如:

if num > 5{
    print("哈哈")
}
//以上是错误的

//懒加载可以写成
if dataList == nil{
    ...
}

if let(Optional Binding)

if let是判断并且设置数值

//确保myUrl有值,才进入分支
if let myUrl = url {
    print(myUrl)
}

通过在条件判断语句中(如if、while等)把Optional值直接给一个临时常量,Swift会自动检测Optional是否包含值,如果包含值,会隐式的拆包并给那个临时常量,在接下来的上下文中就能直接使用这个临时常量

??操作

var oName = "张三"
let cName = oName ?? "abc"
//如果oName为nil,则cName为abc,反之,为oName
var dataList: [String]?

dataList = nil//["zhansan", "lisi"]

//dataList的问号,表示它可能为 nil
//如果为nil, .count 不会报错,仍然返回nil
//一旦dataList为空,就返回0,反之,返回count的结果
let count = dataList?.count ?? 0

//"!"感叹号表示强行解包,结果由程序员负责,出事了程序员背锅
let count1 = dataList!.count//报错qwqww

三目

let a = 80
let b = 20
let c = a > b ? 100 : -100
//如果a > b, c就是100,反之是-100

Optional

意思为可选的,可以有值,可以为nil

!为强行解包,程序员认为此处一定有值,因此用!强行解包,一旦出现错误,就会停在此处.

let url = NSURL(string: "www.google.com/中文")

//let request = NSURLRequest(url: url)

//更安全的写法
if url != nil {
    let request = NSURLRequest(url: url! as URL)
}

相关文章

网友评论

      本文标题:swift学习随笔 Day2

      本文链接:https://www.haomeiwen.com/subject/cgfhgttx.html