ios - swift 中的后缀递归自定义运算符

标签 ios swift operator-overloading

我正在尝试声明一个自定义后缀运算符来计算给定数字的阶乘,有没有办法使这个函数递归(数字-1)!!?

postfix operator !! {}
postfix func !! (number: Double) -> Double {

    if (number <= 1) { return 1.0 }
    return number * (number-1)!!

}

最佳答案

我认为这是不可能的,因为它与用于展开可选值的 ! 冲突。

来自 The Swift Programming Language: Keywords and Puncutation

The following tokens are reserved as punctuation and can’t be used as custom operators: (, ), {, }, [, ], ., ,, :, ;, =, @, #, & (as a prefix operator), ->, `, ?, and ! (as a postfix operator).

但是,在我看来,如果是这种情况,那么 postfix operator !! {} 有效。我推荐 filing a bug .

例如,您可以使用 (双感叹号;U+203C)来解决这个问题。

关于ios - swift 中的后缀递归自定义运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289506/

相关文章:

ios - 如何在运行时获取构建 UUID 和图像基地址

ios - 数组映射,Swift

swift - 在 macOS 中以编程方式播放 Apple Keynote v8.2 演示文稿

c++ - 模板类根据其他类的存在和优先级以及更多类型限制(如 const 和区分大小写)调用其他类的某些函数

ios - Swift 3.0 FileManager.fileExists(atPath :) always return false

ios - UIButton setEnabled 不起作用

ios - 不显示应用程序图标角标(Badge)

ios - 如何调整正在打印在另一个图像上的图像的大小(swift3)

c++ - 检测重载 C++ 运算符中的自赋值

c++ - 在这种情况下,运算符应该 == 还是 != 抛出?