2016-02-21 10 views
5

Io uso F # 4.0/VS-2015F # Unità di misura con simboli di caratteri Unicode, qual è la restrizione esatta?

Questo funziona bene

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

ma questo sarebbe più bello

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

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

Poiché l'% è usato in F #, tutti gli altri simboli Unicode possono essere Usato. Alcuni di questi sono ammessi e altri no.

La domanda è: quali sono le restrizioni?

Conoscendo questo, per altre applicazioni, la ricerca di simboli Unicode può essere pre-filtrata.

ammessi

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

non ammessi

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

risposta

4

Quindi, se ci si immerge attraverso le specifiche, Un tipo di misura deve iniziare con

ident-start-char: Lettera-char o "_"

dove lettera-char è da una delle seguenti classi unicode:

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

Non ho effettivamente controllato se i tuoi personaggi sono in quelle classi, ma penso che l'idea generale sia che le cose che assomigliano a delle lettere dovrebbero essere permesse.

+0

[] tipo _% // non consentito –

+0

Oh beh, non avevo un compilatore da controllare - aggiornerò la classe di codice "\ Nl" –

+0

, credo. Quindi non è possibile: [] digitare 42 –

Problemi correlati