SORU
5 EKİM 2011, ÇARŞAMBA


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
5 EKİM 2011, ÇARŞAMBA


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Noam Erez

    Noam Erez

    3 NİSAN 2012
  • pilslajt

    pilslajt

    20 HAZİRAN 2008