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