Ich habe gesehen, dass das erledigt ist, aber ich kann mich einfach nicht darum kümmern. Irgendwie, scheinbar magisch, funktionieren einige Infix-Funktionen gut, aber andere werden einfach nicht kompilieren. Zum Beispiel:Wie schreibe ich Swift Infix-Funktionen?
Wie Sie sehen hier, meine then
Funktion Arbeit als traditionelle Funktion, aber nicht als Infix ein, doch mein *
hat man das Gegenteil Problem. Was ist die magische Soße, um meine then
Funktion zu einem Infix zu machen?
Seitliche Frage: Warum funktioniert meine *
Funktion nicht als traditionelle Funktion?
-Code für Nur-Text-Leser und Copy-Einfügen:
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 ';'
Ich würde vorschlagen, einen Blick auf hier https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html an dem Infixoperatoren zu nehmen. –