Sim*_*lGy 1 infix-notation swift
我正在阅读swift中的高级操作符.
基本功能:
func add(a: Unicorn, b: Unicorn) -> Unicorn { return a + b }
add(u1, u2) // two unicorns are added
Run Code Online (Sandbox Code Playgroud)
中缀运算符:
func + (a: Unicorn, b: Unicorn) -> Unicorn { return a + b }
c = u1 + u2
Run Code Online (Sandbox Code Playgroud)
后缀:
postfix func + (a: Unicorn) -> Unicorn { return a + 2 } // nonsense example
u1+
Run Code Online (Sandbox Code Playgroud)
我不明白怎么infix可以假定是默认的.从正常的函数声明来看,它看起来并没有什么不同.
这里的规则是什么 - 任何单个字符是中缀操作的合法名称?这是否意味着单个字符函数不被允许?可以任意在SWIFT两个参数的函数调用中缀风格?
我不明白中缀如何被认为是默认值.
如果使用两个参数实现运算符,编译器可以确定您需要一个中缀运算符,因为只有中缀运算符对两个值进行操作.
如果使用一个值实现运算符,则编译器不确定它是前缀还是后缀运算符并且会抱怨.
中缀运算符取两个值,后缀和前缀只有一个.
这是否意味着单个字符函数不被允许?swift中的任何双参数函数都可以称为中缀风格吗?
不是.以这些字符开头的函数是运算符:/,=, - ,+,!,*,%,<,>,&,|,^,?或~ 1.运算符也可以包含多个字符,但必须以其中一个字符开头.
请记住,必须首先声明一个新的运算符,例如:
prefix operator / {}
prefix func / (a: Int) -> Int {
return a / 42
}
/56
Run Code Online (Sandbox Code Playgroud)
但是,此声明不起作用,因为a它不是运算符必须启动的字符之一:
prefix operator a {}
Run Code Online (Sandbox Code Playgroud)
1实际上有更多的角色.阅读这里.