F#单位的度量与Unicode字符符号,具体的限制是什么?

时间:2016-02-21 10:11:34

标签: unicode f# units-of-measurement

我使用F#4.0 / VS-2015

这很好用

[<Measure>] type percent
let x1 = 100<percent>

但这会更好

[<Measure>] type %  // Percent
let x2 = 100<%>

[<Measure>] type €  // Euro
let cost = 99.99<€>

因为%在F#中使用,所以可以使用任何其他Unicode符号。 其中一些是允许的,一些不是。

问题是,有哪些限制?

了解这一点后,对于其他应用程序,可以预先过滤搜索Unicode符号。

允许

[<Measure>] type ᚖ   // U+1696
[<Measure>] type ᕎ  // U+154E
[<Measure>] type ඖ  // U+0D96
let x3 =   0<ඖ>
let x4 =  50<ᕎ>

不允许

[<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 _%

1 个答案:

答案 0 :(得分:4)

因此,如果您浏览规范,则度量类型必须以

开头
  

ident-start-char:letter-char或“_”

其中letter-char来自以下unicode类之一:

  

'\ Lu''\ Ll''\ Lt''\ Lm''\ Lo''\ Nl'

我实际上没有检查过你的角色是否在这些课程中,但我认为一般的想法是应该允许看起来像字母的东西。