Fun*_*l_S 5 unicode f# units-of-measurement
我使用F#4.0/VS-2015
这很好用
[<Measure>] type percent
let x1 = 100<percent>
Run Code Online (Sandbox Code Playgroud)
但这会更好
[<Measure>] type % // Percent
let x2 = 100<%>
[<Measure>] type € // Euro
let cost = 99.99<€>
Run Code Online (Sandbox Code Playgroud)
因为%在F#中使用,所以可以使用任何其他Unicode符号.其中一些是允许的,一些不是.
问题是,有哪些限制?
知道了这一点,对于其他应用程序,可以预先过滤对Unicode符号的搜索.
允许
[<Measure>] type ? // U+1696
[<Measure>] type ? // U+154E
[<Measure>] type ? // U+0D96
let x3 = 0<?>
let x4 = 50<?>
Run Code Online (Sandbox Code Playgroud)
不允许
[<Measure>] type (%) // error FS0010: Unexpected prefix operator in type name. Expected infix operator, quote symbol or other token.
[<Measure>] type % // error FS0010: Unexpected symbol '{0} in type name
[<Measure>] type (?) // error FS0010: Unexpected character '?' in type name. Expected infix operator, quote symbol or other token.
[<Measure>] type ? // error FS0010: Unexpected character '?' in type name
[<Measure>] type ? // ? U+FE6A
[<Measure>] type ? // ? U+066A
[<Measure>] type % // % U+0025
[<Measure>] type ? // ? U+FF05
[<Measure>] type ‰ // ‰ U+2030 promille
[<Measure>] type € // € U+20AC
[<Measure>] type ? // ? U+2277
[<Measure>] type _%
Run Code Online (Sandbox Code Playgroud)
因此,如果您仔细研究规范,测量类型必须以
ident-start-char:字母字符或“_”
其中 letter-char 来自以下 unicode 类之一:
'\Lu' '\Ll' '\Lt' '\Lm' '\Lo' '\Nl'
我实际上并没有检查你的角色是否属于这些类别,但我认为总体思路是应该允许看起来像字母的东西。
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |