即使快速文档说我们可以超载。符号在没有编译器抱怨的情况下我似乎无法这样做。
以下是我正在做的事情:
operator infix . {}
@infix func . (left:Vector2D, right:Vector2D) -> Vector2D {
//func
}
有没有人在swift中成功完成此操作?
答案 0 :(得分:4)
您可以使用.
字符in a custom operator,但不能创建仅.
字符的运算符 - 看起来该标记是语法的更基本部分。 (实际上,.
的限制似乎比你在language guide的语法部分看到的更多,因为你可以创建扩展静默运算符......
,但不是快乐operator ^.^
。)
(想一想:如果你试图用.
来定义两个向量的点积,你就很难用它来处理那些向量的成员。)
答案 1 :(得分:1)
我想你可能会误解documentation。
无法重载默认赋值运算符(=)。只能重载复合赋值运算符。同样,三元条件运算符(a?b:c)也不能重载。
.
显然不是compound assignment operator,它是会员选择运营商。
但是,你可以
除了 Swift提供的标准运算符之外,声明并实现自己的自定义运算符。自定义运算符只能使用字符/ = - + *%<来定义。 > ! &安培; | ^。 〜