2012-06-29 19 views
9
scala> object Test 
defined module Test 

Dlaczego zdefiniowany obiekt Test jest nazywany "modułem", a nie obiektem towarzyszącym przez interpreter scala?Dlaczego zdefiniowany obiekt nazywa się "moduł" przez interpreter Scala?

Czy istnieje różnica między modułem a obiektem towarzyszącym lub czy jest tak samo z dwoma różnymi nazwami?

+1

Myślę, że 'module' był słowem kluczowym Scala w pewnym momencie. Został zmieniony na 'object', aby uczynić język (czuć) bardziej dostępnym dla głównych programistów. – missingfaktor

+1

[To sedno] (https://gist.github.com/1324982) może być pomocne. – missingfaktor

+0

Dziękujemy za dodatkowe informacje. –

Odpowiedz

9

Technicznie, istnieje tylko jedna taka rzecz, w specyfikacji językowej nazywana jest ona najczęściej "modułem", ale można również znaleźć następujące stwierdzenie: "Definicja obiektu definiuje pojedynczy obiekt (lub: moduł) ..." (Scala Language Specification)

Ponadto, można mówić jedynie o towarzysz obiektu, podczas gdy w rzeczywistości towarzyszy coś:

„Generalnie, moduł towarzysz klasy to obiekt, który ma taką samą nazwę jak klasy i jest zdefiniowany w tym samym zakresie i jednostce kompilacji, natomiast klasa nazywa się klasa kompana modułu. " (jeszcze raz pomyśl: obiekt towarzyszący = moduł towarzyszący)

Stan towarzyszący dodaje funkcje do klasy towarzyszącej, a mianowicie widoczność (np. klasa może zobaczyć prywatne pola modułu towarzyszącego). Ten sam zakres i jednostka kompilacji oznacza, że ​​muszą być zdefiniowane w tym samym pliku źródłowym i tym samym pakiecie.


Jest interesting thread on LtU gdzie obiekt Scala porównaniu modułu terminologii omawiane. Zawiera również link do pracy Odersky'ego i Zengera, jeśli jesteś zaintrygowany; pokazując, w jaki sposób szczególnie spojrzeli na system modułowy języka ML (OCaml ma duży wpływ na Scalę) i jak określają to jako różne podejścia do budowy modułowej (sugerując, że moduł jest bardziej ogólną koncepcją, cechy jako moduły mixin, ...)

+0

wskazówka: obiekty towarzyszące z cechami działają tak samo dobrze, jak z klasami. – ayvango

Powiązane problemy