在 Swift 中,?
运算符将 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>
我如何创建自己的函数或运算符来处理类型而不是值?
最佳答案
你想实现的是不可能的。
但是有一个解决方法:您可以创建一个自定义运算符,给定文字或变量,将其转换为可选。 Swift 不允许在自定义运算符中使用 ?
字符,我选择了一个随机组合,但您可以随意使用自己的组合:
postfix operator >! {}
postfix func >! <T>(value: T) -> T? {
return value as T?
}
完成后,您可以按如下方式使用它(来自 playground 的输出):
10>! // {Some 10}
"Test">! // {Some "Test"}
关于types - 定义对类型而非值进行操作的 Swift 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305739/