as let swift
swift let
2016-12-28 15:54:00 weixin_34357887 阅读数 4

首先要说明的是swift没有非零即真的概念

if let

语法

if let 新变量名 = 可选项 {
//do something
}

说明

新变量名的作用域在大括号里面
如果新变量名 有值(对可选项进行的一个解包),则运行 if后边{}里的语句
如果新变量名 没值(可选项是一个nil),则不运行 if后边{}里的语句

例子

var optionalName: String? = nil
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}

guard let

语法

guard let 新变量名 = 可选项 else {
return
}
//do something

说明

新变量名的作用域在大括号外面
如果新变量名有值,则不运行 else 后边{}里的代码
如果新变量名没有值(可选项为nil),则运行 else后边的{}里的代码

例子

var optionalName: String? = nil
var greeting = "Hello!"
guard let name = optionalName else {
        return
}
greeting = "Hello, \(name)"

参考

https://www.zhihu.com/question/36448325

2018-05-14 17:06:02 ziyikongfu 阅读数 553

Swift 基本语法01-Swift简介

Swift 基本语法02-"let"和"var"
Swift 基本语法04-"switch"和"for"
Swift 基本语法05-"String"
Swift 基本语法06-数组和字典

1. if let用法

1.1 普通ifif let的比较
1> 如果常量是可选项(Optional),if判断后仍然需要解包(!

let name: String? = "老王"
let age: Int? = 10

if name != nil && age != nil {
    print(name! + String(age!))     // 输出:老王10
}

2> 如果常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值

let name: String? = "老王"
let age: Int? = 10

// if let 连用,判断对象的值是否为'nil'
if let nameNew = name,
    let ageNew = age {
    
    // 进入分支后,nameNew 和 ageNew 一定有值
    print(nameNew + String(ageNew)) // 输出:老王10
}

Tips:nameNew和 ageNew的作用域仅在{}

3> if var的用法,和if let的区别就是可以在{}内修改变量的值

let name: String? = "老王"
let age: Int? = 10

if var nameNew = name,
    let ageNew = age {
    // 'var'修饰,可以修改'nameNew'的值,'let'修改的不可以修改
    nameNew = "老李"
    print(nameNew + String(ageNew))     // 输出:老李10
}

2. guard let用法

1> guard letif let刚好相反,guard let守护一定有值。如果没有,直接返回。
2> 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
3> 如果用 if let凭空多了一层分支,guard let是降低分支层次的办法
4> guard let语法是 Swift 2.0 推出的

let name: String? = "老王"
let age: Int? = 10

guard let nameNew = name,
    let ageNew = age else {
        
        print("姓名 或 年龄 为nil")
        return
}
// 代码执行至此, nameNew 和 ageNew 一定有值
print(nameNew + String(ageNew))     // 输出:老王10

3. if letguard let的命名技巧

技巧:取和参数名相同的变量名

1> guard let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    guard let name = name,
        let age = age else {
        print("姓名或年龄为nil")
        return
    }
    /**
     * 'name'至此会有两个
     * 1.String  name('guard let'守护,等号右边的'name')
     * 2.String? name('guard let'守护,等号右边的'name')
     * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print(name + String(age))   // 输出:老王11('name''age'为不带'Optional'的)
}

2> if let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    if let name = name,
        let age = age {
        /**
         * 'name'至此只会有两个
         * 1.String  name('if let'守护,等号右边的'name',仅在'{}'作用域内有效)
         * 2.String? name('if let'守护,等号右边的'name')
         * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧
         * 4.如果'name''age'中有一个为'nil',或者都为'nil',下面就不会输出
         */
        print(name + String(age))   // 输出:老王11('name''age'为不带'Optional'的)
    }
    /**
     * 'name'至此只会有一个
     * 2.String? name(demo(name: String?)中的'name')
     * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print("demo(name: String?)中的'name'")
}
2017-09-19 12:36:02 Alexander_Wei 阅读数 888

96 宫城良田__ 

 

 

Swift 基本语法01-Swift简介
Swift 基本语法02-"let"和"var"
Swift 基本语法04-"switch"和"for"
Swift 基本语法05-"String"
Swift 基本语法06-数组和字典

 

1. if let用法

1.1 普通ifif let的比较
1> 如果常量是可选项(Optional),if判断后仍然需要解包(!

let name: String? = "老王"
let age: Int? = 10

if name != nil && age != nil {
    print(name! + String(age!))     // 输出:老王10
}

 

2> 如果常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值

let name: String? = "老王"
let age: Int? = 10

// if let 连用,判断对象的值是否为'nil'
if let nameNew = name,
    let ageNew = age {
    
    // 进入分支后,nameNew 和 ageNew 一定有值
    print(nameNew + String(ageNew)) // 输出:老王10
}

Tips:nameNew和 ageNew的作用域仅在{}

 

3> if var的用法,和if let的区别就是可以在{}内修改变量的值

let name: String? = "老王"
let age: Int? = 10

if var nameNew = name,
    let ageNew = age {
    // 'var'修饰,可以修改'nameNew'的值,'let'修改的不可以修改
    nameNew = "老李"
    print(nameNew + String(ageNew))     // 输出:老李10
}

 

2. guard let用法

1> guard letif let刚好相反,guard let守护一定有值。如果没有,直接返回。
2> 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
3> 如果用 if let凭空多了一层分支,guard let是降低分支层次的办法
4> guard let语法是 Swift 2.0 推出的

let name: String? = "老王"
let age: Int? = 10

guard let nameNew = name,
    let ageNew = age else {
        
        print("姓名 或 年龄 为nil")
        return
}
// 代码执行至此, nameNew 和 ageNew 一定有值
print(nameNew + String(ageNew))     // 输出:老王10

 

3. if letguard let的命名技巧

技巧:取和参数名相同的变量名

1> guard let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    guard let name = name,
        let age = age else {
        print("姓名或年龄为nil")
        return
    }
    /**
     * 'name'至此会有两个
     * 1.String  name('guard let'守护,等号右边的'name')
     * 2.String? name('guard let'守护,等号右边的'name')
     * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print(name + String(age))   // 输出:老王11('name'和'age'为不带'Optional'的)
}

 

2> if let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    if let name = name,
        let age = age {
        /**
         * 'name'至此只会有两个
         * 1.String  name('if let'守护,等号右边的'name',仅在'{}'作用域内有效)
         * 2.String? name('if let'守护,等号右边的'name')
         * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
         * 4.如果'name'或'age'中有一个为'nil',或者都为'nil',下面就不会输出
         */
        print(name + String(age))   // 输出:老王11('name'和'age'为不带'Optional'的)
    }
    /**
     * 'name'至此只会有一个
     * 2.String? name(demo(name: String?)中的'name')
     * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print("demo(name: String?)中的'name'")
}

 

2015-10-28 15:15:31 chelongfei 阅读数 873


        if let unwrappedOptional = postDict {

            print("The optional has a value! It's \(unwrappedOptional)")

        } else {

            print("The optional is nil!")

        }

if let 是个整体,也可以用 if var,这个if表示如果用let 或var声明变量成功即为true,跟生命的是什么值无关,即使是nil也行

,但是假如等号右边是为nil的optional类型的值,不会进行=号赋值,变量声明失败,即if判断为false



2017-05-14 09:45:00 weixin_34365635 阅读数 2
2069062-5044cc896eaab159.png
一个iOS开发初级菜鸡.png

Swift 基本语法01-Swift简介
Swift 基本语法02-"let"和"var"
Swift 基本语法04-"switch"和"for"
Swift 基本语法05-"String"
Swift 基本语法06-数组和字典

1. if let用法

1.1 普通ifif let的比较
1> 如果常量是可选项(Optional),if判断后仍然需要解包(!

let name: String? = "老王"
let age: Int? = 10

if name != nil && age != nil {
    print(name! + String(age!))     // 输出:老王10
}

2> 如果常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值

let name: String? = "老王"
let age: Int? = 10

// if let 连用,判断对象的值是否为'nil'
if let nameNew = name,
    let ageNew = age {
    
    // 进入分支后,nameNew 和 ageNew 一定有值
    print(nameNew + String(ageNew)) // 输出:老王10
}

Tips:nameNewageNew的作用域仅在{}

3> if var的用法,和if let的区别就是可以在{}内修改变量的值

let name: String? = "老王"
let age: Int? = 10

if var nameNew = name,
    let ageNew = age {
    // 'var'修饰,可以修改'nameNew'的值,'let'修改的不可以修改
    nameNew = "老李"
    print(nameNew + String(ageNew))     // 输出:老李10
}

2. guard let用法

1> guard letif let刚好相反,guard let守护一定有值。如果没有,直接返回。
2> 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
3> 如果用 if let凭空多了一层分支,guard let是降低分支层次的办法
4> guard let语法是 Swift 2.0 推出的

let name: String? = "老王"
let age: Int? = 10

guard let nameNew = name,
    let ageNew = age else {
        
        print("姓名 或 年龄 为nil")
        return
}
// 代码执行至此, nameNew 和 ageNew 一定有值
print(nameNew + String(ageNew))     // 输出:老王10

3. if letguard let的命名技巧

技巧:取和参数名相同的变量名

1> guard let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    guard let name = name,
        let age = age else {
        print("姓名或年龄为nil")
        return
    }
    /**
     * 'name'至此会有两个
     * 1.String  name('guard let'守护,等号右边的'name')
     * 2.String? name('guard let'守护,等号右边的'name')
     * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print(name + String(age))   // 输出:老王11('name'和'age'为不带'Optional'的)
}

2> if let演示

override func viewDidLoad() {
    super.viewDidLoad()
    
    demo(name: "老王", age: 11)
}

func demo(name: String?, age: Int?) {
    if let name = name,
        let age = age {
        /**
         * 'name'至此只会有两个
         * 1.String  name('if let'守护,等号右边的'name',仅在'{}'作用域内有效)
         * 2.String? name('if let'守护,等号右边的'name')
         * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
         * 4.如果'name'或'age'中有一个为'nil',或者都为'nil',下面就不会输出
         */
        print(name + String(age))   // 输出:老王11('name'和'age'为不带'Optional'的)
    }
    /**
     * 'name'至此只会有一个
     * 2.String? name(demo(name: String?)中的'name')
     * 3.这里正常应该选择不带'?'的'name',但是即便是选择了('Optional'的'name'),编译器也会帮你更正过来,这就是取名的技巧
     */
    print("demo(name: String?)中的'name'")
}

Swift基本语法 - let/var

阅读数 277

变量和常量定义let 定义常量,一经赋值不允许再修改var 定义变量,赋值之后仍然可以修改//:#常量//:定义常量并且直接设置数值letx=20//:常量数值一经设置,不能修改,以下代码会报错//x=30//:使用`:类型`,仅仅只定义类型,而没有设置数值letx1:Int//:常量有一次设置数值的机会,以下代码没有问题,因为x1

博文 来自: WZ_LV

Swift guard let 的使用

阅读数 104

guardlet的意思与iflet的意思是一样的,都是针对于可选类型进行解包,使用guardlet可以是代码更加清晰易读。例如letdictionary:Dictionary<String,Any>?=["data":["book":["id":"1"]]]ifletdict=dictionary{ifletdata=dict...

博文 来自: qq_25639809

Swift - 可选项判断 'guard let / if let' 的使用技巧

阅读数 24

Paste_Image.png

博文 来自: weixin_34365417

Swift的Optional、if let、protocol、closure

阅读数 297

这是我人生的第一个博客!!这篇博客主要是为了完成老师布置的一些作业。主要是解释Swift3.0的五个概念:1、optional2、iflet3、面向对象4、面向协议5、闭包1、optional:

博文 来自: jaymegs

iOS Swift let和var的区别

阅读数 3249

let用于定义常量,定义完后不能修改。var用于定义变量,可以修改。就是这样子,希望能帮到您。

博文 来自: u014068781
没有更多推荐了,返回首页