我想在我的软件中实现一个货币运算符,它采用Double并返回Currency类型以进行更精确的计算.
自定义运算符的代码基本上看起来像这样.请忽略这种形式的明显精度下降,因此无用的操作员.
postfix operator £ { }
postfix func £(number: Double) -> Int {
return Int(number)
}
3.50£ // returns Int(3)
Run Code Online (Sandbox Code Playgroud)
这在Swift中运行良好.有趣的是,虽然我在尝试与€符号完全相同时遇到错误.
postfix operator € { }
postfix func €(number: Double) -> Int {
return Int(number)
}
Run Code Online (Sandbox Code Playgroud)
这会产生错误'€' is considered to be an identifier, not an operator.我不遵循为什么不允许这样做.
自定义运算符中允许的字符列在Swift编程语言中,而€不是其中之一.(您也可以找到相应的Lexer代码).
两个货币符号之间的主要区别在于£(以及¢和¥)在Latin-1补充块(U + 0080 - U + 00FF)中,而€在货币符号块中(U + 20A0-U) + 20CF),由于某种原因,Swift语言将这些视为标识符而不是类似运算符.
运算符的第一个字符必须是以下之一:
./=-+!*%<>&|^~?¡¢£¤¥¦§©«¬®°±¶»¿×÷ ??†‡•???…?‰????????‹›?????????????????????????????????????????????????????????????????????????????运算符的其余部分也可以是以下字符之一:
.只有当第一个字符是a时,A 才会出现在运算符的其余部分..
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |