重载“。”产生错误

时间:2014-06-07 00:39:18

标签: swift

我似乎无法超载“。”并且不确定它是编译器错误还是我正在做的事情:

@infix func . (a: Int, b: Int) -> Int {
  return a * b
}

我收到了错误:

Expected identifier in function declaration Braced block of statements is an unused closure

2 个答案:

答案 0 :(得分:8)

你不能超载'。'它是该语言的保留令牌。但是,您可以重载..和...运算符。

  

运算符由以下一个或多个字符组成:/,   =, - ,+,!,,%,<,>,&,|,^,〜和..那就是,令牌=, - >,//,/ ,* / ,.,和一元前缀运算符&保留。这些令牌不能超载,也不能用于定义自定义   运算符。

Language Reference

答案 1 :(得分:3)

Swift确实允许自定义运算符的定义和重载,但它只允许将certain characters视为运算符。

  

运算符由以下一个或多个字符组成:/,   =, - ,+,!,*,%,<,>,&,|,^,〜和.. 也就是说,令牌=, - >,//,/ *, * / ,.,和一元前缀运算符&保留。这些令牌不能重载,也不能用于定义自定义   运算符。

尝试重载期间运算符是非法的,尽管它可以用作另一个自定义运算符的一部分。