2
我正在Swift中試驗自定義運算符(EXPERIMENTING。我不需要關於自定義運算符爲什麼壞的講座)我想,hmm,EnumType(rawValue :)是有點長。也許我可以用運營商解決這個問題?所以我寫了:從rawValue初始化泛型類型的枚舉
infix operator ∑
func ∑ <T,U:RawRepresentable>(lhs:T,rhs:U.Type) {
rhs(rawValue: lhs)
}
其中按預期想這個例子可以使用:
enum DiceResult: Int {
case one = 1, two, three, four, five, six
}
let roll = 1 ∑ DiceResult //DiceResult.one
但我寫的代碼給了我這個錯誤:
Non-nominal type 'U' does not support explicit initialization
老實說,我沒期待我寫的東西,無論如何,我甚至不確定我想寫的東西在Swift中完全可能。是否有人能夠做出這樣的事情,誰能說出一些光明?如果是的話,怎麼樣?
這似乎是它仍然是有用的,因爲我可以在類型分配給一個恆定的例如1ΣDICE 而且,呃,不用擔心這不會進入任何公共代碼庫。 – PopKernel