swift – 符号被认为是标识符,而不是运算符

swift – 符号被认为是标识符,而不是运算符,第1张

概述我想在我的软件中实现一个货币运算符,它采用Double并返回Currency类型以进行更精确的计算. 自定义运算符的代码基本上看起来像这样.请忽略这种形式的明显精度下降,因此无用的运算符. postfix operator £ { }postfix func £(number: Double) -> Int { return Int(number)}3.50£ // returns 我想在我的软件中实现一个货币运算符,它采用Double并返回Currency类型以进行更精确的计算.

自定义运算符的代码基本上看起来像这样.请忽略这种形式的明显精度下降,因此无用的运算符.

postfix operator £ { }postfix func £(number: Double) -> Int {    return Int(number)}3.50£ // returns Int(3)

这在Swift中运行良好.有趣的是,虽然我在尝试与€符号完全相同时遇到错误.

postfix operator € { }postfix func €(number: Double) -> Int {    return Int(number)}

这会产生错误”’被认为是标识符,而不是运算符.我不遵循为什么不允许这样做.

解决方法 自定义运算符中允许的字符列在 The Swift Programming Language中,而€不是其中之一. (你也可以找到相应的 Lexer code).

两个货币符号之间的主要区别在于£(以及¢和¥)在Latin-1补充块(U 0080 – U 00FF)中,而€在货币符号块(U 20A0 – U 20CF)中,由于某种原因,Swift语言认为这些类似于标识符而不是类似运算符.

>运算符的第一个字符必须是以下之一:

>.
> / = – !*%<>& | ^〜?
> Latin-1补充:¡¢¥|§«¬®°±¶»¿×÷
>一般标点符号:‖‗†‡•‣.‥…‧‰‱’“‴`”‷‸<>※!‽〜⁁⁂⁃⁅⁆⁇⁇ ⁗⁘⁙⁚⁛⁜⁝⁞
>箭头(U 2190 – U 21FF):整块
>数学运算符(U 2200 – U 22FF):整块
>其他技术(U 2300 – U 23FF):整块
>箱形图(U 2500 – U 257F):整块
>块元件(U 2580 – U 259F):整块
>几何形状(U 25A0 – U 25FF):整块
>其他符号(U 2600 – U 26FF):整块
>标志(U 2700 – U 27BF):除了带圆圈的数字以外的所有数字❶-❿,➀-➉,➊-➓
>其他数学符号-A(U 27C0 – U 27EF):整块
>补充箭头-A(U 27F0 – U 27FF):整块
>盲文模式(U 2800 – U 28FF):整块
>补充箭头-B(U 2900-U 297F):整块
>其他数学符号-B(U 2980 – U 29FF):整块
>补充数学运算符(U 2A00 – U 2AFF):整块
>其他符号和箭头(U 2B00 – U 2BFF):整块
>补充标点符号(U 2E00 – U 2E7F):整个块
> CJK符号和标点符号:,.〃<>“”「」「」【〓】〔〕〖〗= [=〜“”“〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰 >运算符的其余部分也可以是以下字符之一:
>组合变音符号(U 0300 – U 036F):整块
>组合补充变音符号(U 1DC0 – U 1DFF):整个块
>组合符号的变音符号(U 20D0 – U 20FF):整块
>变化选择器(U FE00 – U FE0F):整块
>组合半标记(U FE20 – U FE2F):整块
>变量选择器补充(U E0100 – U E01FF):整块

> A.只有当第一个字符是…时,它才会出现在运算符的其余部分.

总结

以上是内存溢出为你收集整理的swift – 符号被认为是标识符,而不是运算符全部内容,希望文章能够帮你解决swift – 符号被认为是标识符,而不是运算符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1010455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存