如何在 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
}