如何在 Swift 中使用 + 运算符创建自定义函数
How to make a custom function with + operator in Swift
我正在查看来自 rosettacode.org 的代码,其中定义的函数之一是:
class MyClass {
static func + <T>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
}
编译器对此有如下说法:
Member operator '+' must have at least one argument of type 'MyClass'
我更新了方法使其成为静态的,如下所示:
static func + <T: Sequence>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
这并没有消除编译器错误。我试着用谷歌搜索,但我没有想出任何简短的答案。我有什么想法可以消除这个错误吗?
正如@MartinR 在评论中所解释的那样,您需要将此函数放在顶层(不在 class 中)。
import Foundation
// Will compile fine from here as is
func + <T>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
class TableGenerator {
// will require at least one argument of the function to be of `TableGenerator` type
}
我正在查看来自 rosettacode.org 的代码,其中定义的函数之一是:
class MyClass {
static func + <T>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
}
编译器对此有如下说法:
Member operator '+' must have at least one argument of type 'MyClass'
我更新了方法使其成为静态的,如下所示:
static func + <T: Sequence>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
这并没有消除编译器错误。我试着用谷歌搜索,但我没有想出任何简短的答案。我有什么想法可以消除这个错误吗?
正如@MartinR 在评论中所解释的那样,您需要将此函数放在顶层(不在 class 中)。
import Foundation
// Will compile fine from here as is
func + <T>(el: T, arr: [T]) -> [T] {
var ret = arr
ret.insert(el, at: 0)
return ret
}
class TableGenerator {
// will require at least one argument of the function to be of `TableGenerator` type
}