美文网首页
关于Swift 参数可选和必选的区别

关于Swift 参数可选和必选的区别

作者: WMSmile | 来源:发表于2019-08-23 15:50 被阅读0次

关于Swift 参数可选和必选的区别
很多小伙伴会遇到这样的问题


在这里插入图片描述

意思就是,你必须给我确定的类型String 不能为空, 'nil' cannot be assigned to type 'String'。

参数

var str001:String
var str002:String?

str001 = nil //这个是报错的是 'nil' cannot be assigned to type 'String'
str002 = nil

str001 = "str001"
str002 = "str002"

方法

let string:String? = nil
//参数 可选
func add(str:String?){
    
}
//参数 必选
func add1(str:String){
    
}

add(str: string)
add1(str: string ?? "") 

add 方法是你给我字符串和空都可以
add1方法是你给我必须是字符串类型

附录:我朋友(panway)的理解

如果你不确定是不是为空,就用??给个默认值

var filePath : String = self.item?.href ?? ""

如果你100%确定self.item有值,那么你可以用!(force unwrap self.item)

var filePath : String = self.item!.href

我一开始好奇为什么filePath不能为空,OC时代为空代码可以继续啊,结果发现filePath可以为空:

var filePath : String? = self.item?.href

这样是可以,但是下面用到 filePath 的时候(比如filePath是某个方法的参数,但是这个方法不需要你这个“可能为空可能不为空”的玩意,人家要100%非空的),所以编译器还是会给你报错,让你处理成非空的值传进去,所以老哥,早晚都要做的事情,还是提前做了吧

相关文章

  • 关于Swift 参数可选和必选的区别

    关于Swift 参数可选和必选的区别很多小伙伴会遇到这样的问题 意思就是,你必须给我确定的类型String 不能...

  • Flutter -- 类的申明

    申明类的参数。 如果没有{},则为必选参数。 有{},则为可选参数。 调用

  • 面试总结二

    Swift和OC的区别 2.Swift的可选类型 可选类型[https://www.jianshu.com/p/4...

  • TypeScript 函数

    1 . 函数的定义 2 . 可选参数 ?必须放在必选参数之后 3 . 默认参数与普通可选参数不同的是,带默认值的参...

  • argparse的使用记录

    使用 针对必选参数无需指定具体的名称,按照顺序就行,可选参数需要 指定,例如: -o ./build/Ipa

  • setTimeout 三个参数

    setTimeout 参数 第一个参数,必选。code/function。第二个参数,可选。执行或调用 参数一 需...

  • angular 路由可选参数及必选参数

    1.路由跳转a标签 ccd3 routerLink 第一项为路由, 第二项必选参数(若无可以省略),第三项为可选参...

  • Swift 的 Optional错误理解

    Swift 参数声明的时候使用 ! ,? 说明该参数是可选的。默认情况下为 nil以前认为只有? 修饰的才是可选的。

  • Nodejs CLI最佳实践

    使用库 启动设计 方括号([]) 表示可选参数,尖括号(<>) 表示必选参数 总体设计 参考docker命令行设计...

  • Dart(5)函数

    函数格式 例子 可选参数 函数允许定义可选的参数。 定义可选参数有两种方式一种使用{}, 另一种使用[]。区别就是...

网友评论

      本文标题:关于Swift 参数可选和必选的区别

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