2013-07-08 14 views
5

Jestem biegły w Pythonie, ale noob w Scala. Mam zamiar napisać jakiś brudny kod eksperymentu w Scali i natknąłem się na myśl, że byłoby naprawdę przydatne, gdyby Scala pełniła funkcję podobną do tej, jaką jest help() w Pythonie. Na przykład, jeśli chciałbym zobaczyć wbudowane metody dla Scala Array, może chciałbym wpisać coś w rodzaju help(Array), tak jakbym wpisał help(list) w Pythonie. Czy coś takiego istnieje w Scali?Scala odpowiednik pomocy w Pythonie()

+1

zakończenia zakładka w REPL? – sschaef

Odpowiedz

4

Nie znam jednego wbudowanego, ale powinieneś użyć Scaladocs, aby znaleźć te same informacje.

O ile nie zostanie użyte zaćmienie, które ma automatyczne uzupełnianie z krótkimi objaśnieniami. Na przykład da ci wszystkie polecenia dla tablic po wpisaniu "array".

+0

Dzięki! Nie wiem jeszcze, jak używać Scaladocs, ale się dowiem. – Ray

+0

Zazwyczaj używam metody i skaladoc. Jeden z pierwszych kilku linków będzie miał to, czego szukasz. – brebs

1

Podobnie, IDEA posiada polecenie "Quick Documentation Look-up", które działa zarówno dla JARów Scala, jak i Java (-Doc) oraz komentarzy do dokumentacji kodu źródłowego.

3

Myślę, że uzupełnianie kart jest najbliższe pomocy Pythona.

Istnieje również opatrzony datą, ale nadal istotny post z @dcsobral na użyciu dokumentacji Scala i Scalex, który jest podobny do Hoogle dla Haskell.

To jest zakończenie zakładki w ObjectArray.

scala> Array. 
apply     asInstanceOf   canBuildFrom   concat     copy     
empty     emptyBooleanArray  emptyByteArray   emptyCharArray   emptyDoubleArray  
emptyFloatArray  emptyIntArray   emptyLongArray   emptyObjectArray  emptyShortArray   
fallbackCanBuildFrom fill     isInstanceOf   iterate    newBuilder    
ofDim     range     tabulate    toString    unapplySeq 

Dotyczy metod z klasy Array. Nie wiem, dlaczego tego nie pokazuje członków Wartość po a.

scala> val a = Array(1,2,3) 
a: Array[Int] = Array(1, 2, 3) 

scala> a. 
apply   asInstanceOf clone   isInstanceOf length   toString  update 

Choć trochę trudne w realizacji zakładce razy na metodzie przedstawiono podpisy metod. Tu jest za Array.fill

def fill[T](n1: Int, n2: Int)(elem: => T)(implicit evidence$10: reflect.ClassTag[T]): Array[Array[T]]             
def fill[T](n1: Int, n2: Int, n3: Int)(elem: => T)(implicit evidence$11: reflect.ClassTag[T]): Array[Array[Array[T]]]         
def fill[T](n1: Int, n2: Int, n3: Int, n4: Int)(elem: => T)(implicit evidence$12: reflect.ClassTag[T]): Array[Array[Array[Array[T]]]]     
def fill[T](n1: Int, n2: Int, n3: Int, n4: Int, n5: Int)(elem: => T)(implicit evidence$13: reflect.ClassTag[T]): Array[Array[Array[Array[Array[T]]]]] 
def fill[T](n: Int)(elem: => T)(implicit evidence$9: reflect.ClassTag[T]): Array[T] 
+0

Ukończenie zakładki nie powoduje dodania członków przez implicity. Jednak tabbing jest dla mnie często łatwiejszy niż skaladoc (przychodzi mi do głowy api). –

+0

Uzupełnianie tabulacji Hmmm wydaje się mniej eleganckie niż "help()" Pythona, ale wydaje mi się, że spełnia swoje zadanie. Dziękuję Ci! – Ray

1

sbt-man jest sbt plugin dla patrząc scaladoc. Komenda SBT console rozpoczyna Scala rEPL z zajęć projektowych i zależności na ścieżce klasy

Przykład:

man Traversable /: 
[man] scala.collection.Traversable 
[man] def /:[B](z: B)(op: (B ⇒ A ⇒ B)): B 
[man] Applies a binary operator to a start value and all elements of this 
collection, going left to right. Note: /: is alternate syntax for foldLeft; 
z /: xs is the same as xs foldLeft z. Note: will not terminate for infinite- 
sized collections. Note: might return different results for different runs, 
unless the underlying collection type is ordered. or the operator is 
associative and commutative.