Scala geçerli bir tanımlayıcı karakterler
Oldukça kafa karıştırıcı bir şey karakterleri tanımak ve yöntemi ve değişken adları kullanabilirsiniz kombinasyonu. Örneğin
val #^ = 1 // legal
val # = 1 // illegal
val = 1 // legal
val & = 1 // legal
val &2 = 1 // illegal
val £2 = 1 // legal
val ¬ = 1 // legal
Anladığım kadarıyla, arasında bir ayrım vardıralfanümerik tanımlayıcıveoperatör tanımlayıcıları. Biri veya diğeri, ama ikisi de, bir alt çizgi ile ayrılmış olmadıkça bir maç karıştırabilirsiniz (birkarışık bir tanımlayıcı).
DanScala programlamabölüm 6.10,
Operatör tanımlayıcı bir veya daha fazla operatör karakterden oluşur. , :, ? Operatörü karakterler yazdırılabilir ASCII karakterler gibi, ~ veya #.
Daha doğrusu, operatör bir Unicode karakter kümesine ait semboller(Sm) ya da diğer semboller matematiksel () veya 7-bit için ASCII harfler, rakamlar, parantez, köşeli olmayan karakterler parantez, ayraç, tek veya çift tırnak veya altçizgi, yarı-kolon nokta, virgül, ya da ters tırnak karakteri.
()[]{}'"_.;,
` kullanarak alınmadı
Wikipedia, Unicode matematiksel semboller ama*, , * :
?
7 vb yoktu olanları ben buldum baktım. Operatör karakterleri vardır bir yerlerde kesin bir liste var mı?
Ayrıca, matematiksel işleçler (semboller yerine) operatörleri olarak sayılmaz neden herhangi bir fikir?
CEVAP
Spec ebnf ile ilgili sözdizimi çalışma:
upper ::= ‘A’ | ... | ‘Z’ | ‘$’ | ‘_’ and Unicode category Lu
lower ::= ‘a’ | ... | ‘z’ and Unicode category Ll
letter ::= upper | lower and Unicode categories Lo, Lt, Nl
digit ::= ‘0’ | ... | ‘9’
opchar ::= “all other characters in \u0020-007F and Unicode
categories Sm, So except parentheses ([]) and periods”
Ama aynı zamanda dikkate tanımlar: bu Sözcük Sözdizimi başından alıyor
Parentheses ‘(’ | ‘)’ | ‘[’ | ‘]’ | ‘{’ | ‘}’.
Delimiter characters ‘‘’ | ‘’’ | ‘"’ | ‘.’ | ‘;’ | ‘,’
İşte benim kızım işte. Aralığında kaldırılması ile çalışma \u0020-007F
, harfler, rakamlar, parantez ve sınırlayıcı ortadan kaldırılması, opchar
... (davullar): var
! # % & * - / : < = > ? @ \ ^ | ~
ve aynı zamanda Sm
parantez ve dönemleri hariç So
-.
(Edit: burada geçerli örnekler eklemeyi:). Özet olarak, burada tüm davaları - ÇOĞALTMA \
dikkat et vurgulayan geçerli bazı örnekler, \\
gibi kaçmak zorunda kaldım:
val !#%&* -/:<=>?@\^|~ = 1 // all simple opchars
val simpleName = 1
val withDigitsAndUnderscores_ab_12_ab12 = 1
val wordEndingInOpChars_!#%&* -/:<=>?@\^|~ = 1
val !^©® = 1 // opchars ans symbols
val abcαβγ_!^©® = 1 // mixing unicode letters and symbols
NOT 1:
Bu category index Lu, Ll, Lo, Lt, Nl
anlamaya Unicode buldum:
- Lu (büyük harf)
- Ll (küçük harfler)
- Lo (diğer harfler)
- Lt (titlecase)
- Nl (Romen rakamları gibi harf sayı)
- Sm (sembol matematik)
- Yani (simge) başka
NOT 2:
val #^ = 1 // legal - two opchars
val # = 1 // illegal - reserved word like class or => or @
val = 1 // legal - opchar
val & = 1 // legal - two opchars
val &2 = 1 // illegal - opchar and letter do not mix arbitrarily
val £2 = 1 // working - £ is part of Sc (Symbol currency) - undefined by spec
val ¬ = 1 // legal - part of Sm
NOT 3:
Diğer operatör görünümlü ayrılmış sözcükler şeyler:_ : = => <- <: <% >: # @
ve aynı zamanda \u21D2
harflerle ve \u2190
birer rakam
Kod imzalama hatası: Uygulama Tanımlay...
Nasıl Scala'ler geçerli mi() sihi...
Bir URL parça tanımlayıcı geçerli kara...
Scala tanımlayıcı "örtük" ne...
Birden çok durumda, maç scala sınıflar...