我似乎无法超载“。”并且不确定它是编译器错误还是我正在做的事情:
@infix func . (a: Int, b: Int) -> Int {
return a * b
}
我收到了错误:
Expected identifier in function declaration
Braced block of statements is an unused closure
答案 0 :(得分:8)
你不能超载'。'它是该语言的保留令牌。但是,您可以重载..和...运算符。
运算符由以下一个或多个字符组成:/, =, - ,+,!,,%,<,>,&,|,^,〜和..那就是,令牌=, - >,//,/ ,* / ,.,和一元前缀运算符&保留。这些令牌不能超载,也不能用于定义自定义 运算符。
答案 1 :(得分:3)
Swift确实允许自定义运算符的定义和重载,但它只允许将certain characters视为运算符。
运算符由以下一个或多个字符组成:/, =, - ,+,!,*,%,<,>,&,|,^,〜和.. 也就是说,令牌=, - >,//,/ *, * / ,.,和一元前缀运算符&保留。这些令牌不能重载,也不能用于定义自定义 运算符。
尝试重载期间运算符是非法的,尽管它可以用作另一个自定义运算符的一部分。