Tôi đã nhìn thấy điều này được thực hiện, nhưng tôi không thể quấn đầu của tôi xung quanh nó. Bằng cách nào đó, dường như một cách kỳ diệu, một số chức năng infix hoạt động tốt, nhưng những người khác chỉ đơn giản là sẽ không biên dịch. Ví dụ:Làm cách nào để viết các hàm Swift infix?
Như bạn thấy ở đây, công việc then
chức năng của tôi như là một chức năng truyền thống, nhưng không phải là một trung tố một, nhưng *
một của tôi có vấn đề ngược lại. Nước sốt ma thuật có chức năng then
là gì?
Câu hỏi phụ: Tại sao chức năng *
của tôi không hoạt động như một chức năng truyền thống?
Mã cho văn bản chỉ đọc và sao chép-dán:
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 ';'
Tôi khuyên bạn nên xem xét tại đây https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html tại các nhà cung cấp dịch vụ. –