Ios swift中的后缀递归自定义运算符
我试图声明一个自定义后缀运算符,它计算给定数字的阶乘,有没有办法使这个函数递归(number-1)Ios swift中的后缀递归自定义运算符,ios,swift,operator-overloading,Ios,Swift,Operator Overloading,我试图声明一个自定义后缀运算符,它计算给定数字的阶乘,有没有办法使这个函数递归(number-1) postfix操作符!!{} 后缀func!!(号码:双人)->双人{ 如果(数字我认为这是不可能的,因为它与用于展开选项的!冲突 从 以下标记保留为标点符号,不能用作自定义运算符:(,),{,},[,],,,:,,,,,,=,,,,(作为前缀),->,`,?,和!(作为后缀操作符) 然而,在我看来,如果是这种情况,那么postfix操作符!!{}是有效的,这是一个bug。我建议 您可以通过使用-
postfix操作符!!{}
后缀func!!(号码:双人)->双人{
如果(数字我认为这是不可能的,因为它与用于展开选项的!
冲突
从
以下标记保留为标点符号,不能用作自定义运算符:(
,)
,{
,}
,[
,]
,
,,:
,,,,,,=
,,,
,(作为前缀),->
,`
,?
,和!
(作为后缀操作符)
然而,在我看来,如果是这种情况,那么postfix操作符!!{}
是有效的,这是一个bug。我建议
您可以通过使用-
来解决这个问题,例如(双感叹号;U+203C)。这是可行的,但如果您使用!!
则不行-它将其解释为两个隐式可选延迟。其他一些符号也可以使用-例如:
postfix operator £ {}
postfix func £(number : Double) -> Double {
if number<=1 {
return 1.0
}
return number * (number-1)£
}
postfix运算符{}
后缀func(数字:Double)->Double{
如果数字我们需要在文件级别指定后缀运算符:
import UIKit
postfix operator !
struct A {
var a = 5
var b = 10
}
extension A {
static postfix func !(m: A) -> A {
return A(a: -m.a, b: -m.b)
}
}
var obj1 = A(a:45, b: 46)
var obj4 = obj1!
现在,obj4的值将是-45,-46我已经向苹果公司报告过了,顺便说一句,感谢您提供了详细的答案+1:DDo您可能知道为什么会这样,但不允许使用欧元?我得到了“€”被认为是一个标识符,而不是一个操作员”。
import UIKit
postfix operator !
struct A {
var a = 5
var b = 10
}
extension A {
static postfix func !(m: A) -> A {
return A(a: -m.a, b: -m.b)
}
}
var obj1 = A(a:45, b: 46)
var obj4 = obj1!