F# Units of Measures with Unicode characters symbols,确切的限制是什么?
F# Units of Measures with Unicode characters symbols, what is the exact restriction?
我使用 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 _%
因此,如果您深入了解规范,度量类型必须以
开头
ident-start-char:letter-char or "_"
其中 letter-char 来自以下 unicode 之一 类:
'\Lu' '\Ll' '\Lt' '\Lm' '\Lo' '\Nl'
我还没有真正检查过你的字符是否在那些 类 中,但我认为一般的想法是应该允许看起来像字母的东西。
我使用 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 _%
因此,如果您深入了解规范,度量类型必须以
开头ident-start-char:letter-char or "_"
其中 letter-char 来自以下 unicode 之一 类:
'\Lu' '\Ll' '\Lt' '\Lm' '\Lo' '\Nl'
我还没有真正检查过你的字符是否在那些 类 中,但我认为一般的想法是应该允许看起来像字母的东西。