Saya ada kelas:
class TestClass
def method1
end
def method2
end
def method3
end
end
Bagaimana saya bisa mendapatkan daftar metode saya di kelas ini ( method1
, method2
, method3
)?
ruby
reflection
ruby-1.9.2
Vladimir Tsukanov
sumber
sumber
print TestClass.new.instance_methods
, saya mendapatkan kesalahan inimy_class.rb:10:in <main>: undefined method instance_methods for #<TestClass:0x96b9d20> (NoMethodError)
TestClass.new.methods
. Mungkin "itu" ambigu dalam jawaban saya.[:method1]
sebagai gantinya.untuk mendapatkan hanya metode yang dimiliki kelas itu saja.
TestClass.instance_methods(false)
akan mengembalikan metode dari contoh yang Anda berikan (karena mereka adalah metode instance TestClass).sumber
atau tanpa semua metode yang diwariskan
(Sebelumnya 'TestClass.methods - Object.methods')
sumber
TestClass.methods(false)
.TestClass.methods(false)
kembali kosongmethod1
,,method2
ataumethod3
, karena itu adalah metode dari instance kelas, bukan metode dariTestClass
objek itu sendiri.Anda bisa mendapatkan daftar yang lebih rinci (misalnya terstruktur dengan mendefinisikan kelas) dengan permata seperti debugging atau looksee .
sumber
sumber
Menurut instance_methods Ruby Doc
Mari kita lihat hasilnya.
sumber
Untuk hanya mendapatkan metode sendiri, dan mengecualikan yang diwariskan:
Dari dalam contoh:
Dari luar:
Tambahkan ke kelas:
(dengan ruby 2.6.x)
sumber