1
在斯威夫特操作定义斯威夫特功能外,?
运营商负责Types
作为参数,而不是值:上类型而不是值
var z = 42? // won't create an Optional<Int> and won't compile
var z : Int? = 42 // ? takes Int and give a Optional<Int>
如何创建自己的功能,或在工作类型,而不是运营商的价值?
在斯威夫特操作定义斯威夫特功能外,?
运营商负责Types
作为参数,而不是值:上类型而不是值
var z = 42? // won't create an Optional<Int> and won't compile
var z : Int? = 42 // ? takes Int and give a Optional<Int>
如何创建自己的功能,或在工作类型,而不是运营商的价值?
你想实现的是不可能的。
但是有一个解决方法:您可以创建一个给定文字或变量的自定义运算符,将其转换为可选。斯威夫特不允许使用?
字符在运营商定制,我选择的随机组合,而是随意使用自己:
postfix operator >! {}
postfix func >! <T>(value: T) -> T? {
return value as T?
}
一旦这样做,你可以按如下(从操场输出)使用它:
10>! // {Some 10}
"Test">! // {Some "Test"}
'?'是不是对工作类型的操作,这是斯威夫特的“语法糖”部分上的'可选'顶部。换句话说,编译器知道在类型名称后面看到“?”后该怎么做。如果你想写这样的操作符,你需要修改编译器。 –
dasblinkenlight
2014-10-10 18:29:13