2016-02-21 13 views
5

verwende ich F # 4.0/VS-2015F # Maßeinheiten mit Unicode-Zeichen Symbole, was ist die genaue Einschränkung?

Dies funktioniert

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

aber dies wäre schöner

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

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

Da die% in F # verwendet wird, können beliebige andere Unicode-Zeichen sein benutzt. Einige von ihnen sind erlaubt und andere nicht.

Die Frage ist, was sind die Einschränkungen?

Wenn Sie dies wissen, kann die Suche nach Unicode-Symbolen für andere Anwendungen möglicherweise vorgefiltert werden.

erlaubt

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

nicht erlaubt

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

Antwort

4

Also, wenn Sie durch die spec tauchen, muss eine Maßnahme Typ mit

ident-Start-Zeichen beginnen: letter-char oder "_"

wo Brief Saibling aus einer der folgenden Unicode-Klassen ist:

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

Ich habe nicht wirklich überprüft, ob deine Charaktere in diesen Klassen sind, aber ich denke, die allgemeine Idee ist, dass Dinge, die wie Buchstaben aussehen, erlaubt sein sollten.

+0

[] typ _% // nicht erlaubt –

+0

Oh, ich hatte keinen Compiler zu überprüfen - wird aktualisiert –

+0

Unicode-Klasse '\ Nl' ist Zahlenbrief, denke ich. Also das ist nicht möglich: [] typ 42 –