Jeśli uruchomić ten plik jako „ruby x.rb
«:Co to jest "główny" w Ruby?
class X
end
x = X.new
Co jest rzeczą, że dzwoni»X.new
”?
Czy jest to obiekt/proces/itp.?
Jeśli uruchomić ten plik jako „ruby x.rb
«:Co to jest "główny" w Ruby?
class X
end
x = X.new
Co jest rzeczą, że dzwoni»X.new
”?
Czy jest to obiekt/proces/itp.?
Wszystko w Ruby występuje w kontekście jakiegoś obiektu. Obiekt na najwyższym poziomie nazywa się "głównym". Jest to po prostu instancja obiektu ze specjalną właściwością, że wszelkie zdefiniowane tam metody są dodawane jako metody instancji obiektu (dzięki czemu są one dostępne wszędzie).
Tak więc możemy zrobić skrypt, na które składają się wyłącznie z:
puts object_id
@a = 'Look, I have instance variables!'
puts @a
i będzie drukować „105640” i „Spójrz, mam zmienne instancji”.
Nie jest to coś, z czym zazwyczaj trzeba się martwić, ale ono istnieje.
Niektóre z pozostałych odpowiedzi mówią, że "interpreter ruby" wywołuje nową metodę. Ale myślę, że mówisz, że przed tym zdarzeniem jest jakiś pośredni krok. I to jest, że instancja obiektu jest tworzona, a całe wykonanie odbywa się za pośrednictwem tego obiektu. Naprawdę staram się tylko wypełnić puste pola w moim rozumieniu tego, w jaki sposób "nowa" metoda zostaje przekazana jako wiadomość do obiektu X. Z tego, co mówisz, wynika, że główna (instancja Object) przekazuje nową metodę jako wiadomość do instancji klasy X. Czy jestem coraz bliżej? – lorz
Cóż, myślę, że technicznie można powiedzieć, że to interpreter Ruby robi * wszystko *, ponieważ to właśnie faktycznie wykonuje twój kod. Ale z punktu widzenia języka, tak, twój opis brzmi dokładnie tak. Na najwyższym poziomie, kiedy po raz pierwszy zaczynasz pisać w Ruby, jesteś w kontekście tego obiektu. Większość ludzi nie używa najwyższego poziomu, jak obiekt, ale jest to jeden. – Chuck
Uwaga: ta odpowiedź jest nieco nieaktualna. Metoda zdefiniowana w przestrzeni nazw 'main' jest teraz" magicznie "dodana do' BasicObject', która podklasuje 'Object' jak w Ruby 1.9. – steel
To klasa X. Jesteś wywołanie metody „nowy”, który tworzy obiekt klasy X. Tak więc, jeśli uruchomić ten tekst jako skrypt, Ruby:
new
.x
new
na tej nowej klasy X
, tworząc obiekt X instancji; x otrzymuje odniesienie do tego obiektu.Myślę, że on odnosi się do jakiegoś punktu wejścia. – Geo
To interpreter Ruby uruchamiając linię
x = X.new
jak w wielu językach skryptowych, skrypt interpretuje się od góry do dołu zamiast standardowej metody punktu wejścia jak większość zebranych językach.
Tak, myślę, że osoba zadająca to pytanie odnosiła się do "głównego" z perspektywy programisty C.Wszyscy tutaj wydają się myśleć o obiekcie najwyższego poziomu o nazwie 'main' w Ruby, co nie jest całkiem tym samym. – Ajedi32
Jak powiedział Charlie Martin, X.new jest wołaniem do konstruktora klasy X, który zwraca obiekt typu X zapisany w zmiennej x.
Na podstawie Twojego tytułu, myślę, że szukasz trochę więcej. Ruby nie potrzebuje głównej, wykonuje kod w takiej kolejności, w jakiej go widzi. Więc zależności muszą być włączone przed ich wywołaniem.
Więc twoim głównym jest każdy kod w stylu proceduralnym, który jest napisany poza definicją klasy lub modułu.
Czy ruby - "stawia siebie". Wyświetli się "główny". Jest to obiekt kontekstowy najwyższego poziomu. – Chuck
Chodzi mi o to, że nie deklarujesz głównej metody, ponieważ oryginalny plakat zdawał się sugerować w jego pytaniu. –
Wywoływacz najwyższego poziomu to obiekt główny, który jest obiektem klasy.
Wypróbuj ten program Ruby
p self
p self.class
czuję jakby to pytanie może korzystać z kontekstu to jedno: http://stackoverflow.com/questions/916795 – mipadi
poproszony przez tę samą osobę. LOL – Randolpho