2012-05-06 21 views
9

Cay S. Horstmann'ın “Sabırsızlık için Ölçeği” ile yoluma devam ederken, ilk bölümde ilk alıştırmada ortaya çıkan ilginç bir şey fark ettim.Scala REPL'in sekmesi tamamlandı mı?

  1. Scala REPL'de, 3. yazıp ardından Sekme tuşuna basın. Hangi yöntemler uygulanabilir? Bunu yaparken

, şu

 
scala> 3. 
%    &    *    +    -   /    
>    >=    >>    >>>   ^   asInstanceOf 
isInstanceOf toByte   toChar   toDouble  toFloat  toInt   
toLong   toShort  toString  unary_+  unary_-  unary_~   
|  

olsun Ama ben Sekmesi ikinci kez vurursan, ben biraz farklı listesini almak fark ettim.

 
scala> 3. 
!=    ##    %    &    *    +    
-   /       >=    >>    >>>   ^   asInstanceOf 
equals   getClass  hashCode  isInstanceOf toByte   toChar   
toDouble  toFloat  toInt   toLong   toShort  toString  
unary_+  unary_-  unary_~  |  

REPL bana burada ne anlatmaya çalışıyor? İkinci kez ortaya çıkan farklı yöntemler hakkında özel bir şey var mı?

cevap

11

REPL raises the verbosity of the completion iki kez sekme vurmak: "methodName" z 'ın tamamlamaları arasında yer alıyorsa

ve verbosity > 0 sekmesini gösteren o zaman alternativesFor arayıp bir listesini göstermek, iki kez arka arkaya preslenmiş aşırı yüklü yöntem imzaları. interpreter source den

aşağıdaki yöntemler yöntem tamamlanması için filtrelenmiş ne işaret ne zaman verbosity == 0 (yani sadece bir kez sekmeyi isabet ettik ve alternativesFor sürümünü almıyorsanız zaman): Yani ile

def anyRefMethodsToShow = Set("isInstanceOf", "asInstanceOf", "toString") 

def excludeEndsWith: List[String] = Nil 

def excludeStartsWith: List[String] = List("<") // <byname>, <repeated>, etc. 

def excludeNames: List[String] = 
    (anyref.methodNames filterNot anyRefMethodsToShow) :+ "_root_" 

def exclude(name: String): Boolean = (
    (name contains "$") || 
    (excludeNames contains name) || 
    (excludeEndsWith exists (name endsWith _)) || 
    (excludeStartsWith exists (name startsWith _)) 
) 

Bir sekme, tercüman geliştiricilerinin karar vermiş olduğu bazı kurallara göre filtrelenen yöntemleri makul ve yararlı bir hale getiriyorsunuz. İki sekme, size filtre uygulanmamış sürümü verir.

İlgili konular