Herkese merhaba! Ruby'deki yöntemlerin, ClassName.method_name
sözdizimi ile nasıl çağrılmadığını merak ediyordum. Başımın üst kısmındakiler puts
, print
, gets
, chomp
. Bu yöntemler nokta operatörü kullanılmadan çağrılabilir. Bu neden? Onlar nereden geliyor? Ve bu tür yöntemlerin tam listesini nasıl görebilirim?Sınıfsız Ruby yöntemleri?
cevap
Kernel
'daki tüm yöntemler, Object
sınıfının tüm nesnelerine veya Object
'dan türetilen herhangi bir sınıf için kullanılabilir. Listelemek için Kernel.instance_methods
'u kullanabilirsiniz.
Her sınıf için otomatik olarak dahil edilen Kernel
modülünden gelirler. Bu
irb(main):001:0> class Foo
irb(main):002:1> end
=> nil
irb(main):003:0> Foo.included_modules
=> [Kernel]
daha kısa: 'Class.new.included_modules'. :-) –
@chris: kesinlikle :) – xinit
Üzgünüz, ama "otomatik olarak dahil" yanıltıcı olabilir, ve tam olarak doğru değil ... Yanıltıcı çünkü "Kernel" dahil bir eylem gibi geliyor Ruby tarafından yapılır, ama sadece çünkü yeni sınıflar bir nesne olarak “Nesne” ye sahiptir ve “Nesne”, “Kernel” i içerir. Nesne 'de başka bir modül ekleyin ve aynı etkiyi elde edersiniz; Kernel hakkında özel bir şey yok. Oldukça doğru değil çünkü 'BasicObject' alt sınıfları 'Kernel' içermeyecektir. –
- 1. Ruby: 'new' sınıfsız
- 2. Ruby'de sınıfsız bir DSL nasıl oluşturulur?
- 3. Sınıfsız Modüllerde örnek yöntemlerin amacı nedir?
- 4. Kotlin - Sınıfsız vücut kullanımı nedir?
- 5. Ruby: Nesneye Gönderilen Tüm Yöntemleri Yakalamak
- 6. Ruby - Sınıf yöntemleri nasıl yeniden tanımlanır?
- 7. Ruby dizisinin yöntemleri nedir ve rassoc?
- 8. Bir Ruby uygulamasında kullanılmayan yöntemleri nasıl bulabilirim?
- 9. 'Yardımcı' yöntemleri nereye koyacağım?
- 10. Ruby: Modüller
- 11. Linq Yöntemleri
- 12. Scala yöntemleri _ =
- 13. tanımlanması yöntemleri
- 14. Java Yöntemleri
- 15. Yakut - yöntemleri
- 16. Ruby & Ruby on Rails
- 17. (Ruby, Rails) (Ruby, Rails)
- 18. Ruby Ruby eşdeğeri Python
- 19. Ruby
- 20. Ruby
- 21. Ruby
- 22. Ruby
- 23. Ruby
- 24. ruby
- 25. Ruby
- 26. Ruby
- 27. Ruby
- 28. Ruby
- 29. Ruby
- 30. Ruby
çok teşekkür ederim :) – Kvass
Sınıf alt sınıfları "Obejct" olan nesneler için kullanılabilir oldukları için tam olarak doğru değil. 'BasicObject' temelli sınıf örnekleri' Kernel 'yöntemlerine sahip olmaz. –
@ Marc-André: Teşekkürler! Düzeltildi. –