私はこれを行っているのを見たことがありますが、私はそれの周りに私の頭を包むことはできません。どうやら、一見魔法のように、いくつかの中置関数は正常に機能しますが、他の関数は単純にコンパイルされません。たとえば、次のようにSwiftインフィックス関数を書くにはどうすればいいですか?
あなたがここに見るように、伝統的な機能としてではなく、中置一つとして私のthen
機能の仕事、まだ私の*
1は反対の問題があります。 私のthen
機能をインフィニクス機能とするには、どのような魔法のソースがありますか?
サイド質問:私の*
機能が従来の機能として機能しないのはなぜですか?
コードとコピー&ペーストを:
public func * (let left:String, let right:Int) -> String {
if right <= 0 {
return ""
}
var result = left
for _ in 1..<right {
result += left
}
return result
}
*("Left", 6) // error: '*' is not a prefix unary operator
"Left" * 6 // "LeftLeftLeftLeftLeftLeft"
public func then (let left:String, let _ right:String) -> String {
return left + right
}
then("Left", "Right") // "LeftRight"
"Left" then "Right" // 2 errors: Consecutive statements on a line must be separated by ';'
ここでは、インフィックス演算子でhttps://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.htmlを参照することをお勧めします。 –