Swift 让x在x.hasuffix(“pepper”)中如何工作
在下面的代码块中,我无法理解Swift 让x在x.hasuffix(“pepper”)中如何工作,swift,swift-playground,Swift,Swift Playground,在下面的代码块中,我无法理解let x where x.hasSuffix(“pepper”) 控制台输出 蔬菜评论:这是一种辛辣的红辣椒吗 似乎以下逻辑正在发生 x = vegetable if (x's suffix == 'pepper') run case 有人能给我解释一下吗?蔬菜是一个隐式的字符串。这和你写的一样: var vegetable: String = "red pepper" hasSuffix声明为func hasSuffix(后缀:String)->Bo
let x where x.hasSuffix(“pepper”)
控制台输出
蔬菜评论:这是一种辛辣的红辣椒吗
似乎以下逻辑正在发生
x = vegetable
if (x's suffix == 'pepper')
run case
有人能给我解释一下吗?
蔬菜
是一个隐式的字符串
。这和你写的一样:
var vegetable: String = "red pepper"
hasSuffix
声明为func hasSuffix(后缀:String)->Bool
an因此返回一个Bool
。where
关键字指定了额外的要求,并且只能在switch
语句中使用。
因为所有这些都被覆盖,所以
变量被分配给x(让x
)
您可以阅读有关where
和开关的更多信息
在这种情况下,实际上没有理由使用let x
case let x where x.hasSuffix(“胡椒”):
可以简单地替换为case vegetar where vegetar.hasSuffix(“胡椒”)
。在这个场景中,声明了一个额外的变量x
,该变量复制蔬菜
。这是没有用的,而且arguable会降低可读性,即使您也将x
重命名为plate
在switch语句中使用let
在其他情况下很有用,例如“参数”(蔬菜)不是变量时,例如switch(getVegetableName())
,或者在“参数”是元组且需要解包的情况下,例如在
let vegetablename和country=(“红薯”、“美国”)
开关(蔬菜名称和国家/地区){
案例(let蔬菜,let国家),其中国家=“坦桑尼亚”:
印刷品(“这种蔬菜来自肯尼亚北部的一个国家”)
凯斯(“红薯”)://注意这里我忽略了这个国家,甚至不用为它创建一个常数
印刷品(“红薯”)
违约:
打印(“我们不在乎这种蔬菜”)
}
看起来像一个内联lamb,我在苹果网站上读到了参考资料,但是有人如何访问切换结果呢?开关是一种功能吗?或者匹配案例中的代码只是运行?(对努奥比的问题感到抱歉)如果改为:vegatable.hasSuffix(“胡椒”)会更有意义
var vegetable: String = "red pepper"