Przeszedłem przez Ruby Koans i znalazłem interesujący temat about_open_classes.rb koan. Specjalnie ostatni test, w którym modyfikuje się metodę Integer#even?
. Chciałem bawić się z tą koncepcją, więc otworzyłem Irb i próbowałem uruchomić Integer.respond_to?(:even?)
, ale ku mojemu zaskoczeniu dostałem fałszywego. Potem próbowałem Fixnum.respond_to?(:even?)
i otrzymałem fałsz. Próbowałem też Integer.respond_to?(:respond_to?)
i spełniłem swoją rolę, a kiedy wykonuję 2.even?
, również się sprawdzam. Nie mam pojęcia, co się dzieje. Czy ktoś może powiedzieć, czego mi brakuje?Dlaczego wartość Integer.respond_to? (: Even?) Zwraca wartość false?
5
A
Odpowiedz
9
Instancja Fixnum będzie respond_to? :even?
, ale sama klasa Fixnum nie będzie
>> 3.respond_to? :even?
=> true
>> 3.class
=> Fixnum
>> Fixnum.respond_to? :even?
=> false
>> Fixnum.class
=> Class
Można zobaczyć, jak to działa, definiując własne klasy badawczej:
class Test
def self.a
"a"
end
def b
"b"
end
end
>> Test.respond_to? :a
>> true
>> Test.respond_to? :b
>> false
>> t = Test.new
>> t.respond_to? :a
>> false
>> t.respond_to? :b
>> true
Powiązane problemy
- 1. Dlaczego String.Equals zwraca wartość false?
- 2. Poczta zwraca wartość false
- 3. Kiedy mysql_query zwraca wartość false
- 4. PHP is_writable() zwraca wartość true, ale file_put_contents() zwraca wartość false
- 5. Kiedy commit Androida SharedPreferences() zwraca wartość false?
- 6. Dlaczego lista.append ma wartość false?
- 7. TryParseExact zwraca wartość false, ale nie wiem, dlaczego
- 8. "aaaa" .StartsWith ("aaa") zwraca wartość false
- 9. NSFileManager.defaultManager(). FileExistsAtPath zwraca wartość false zamiast true
- 10. getBoolean (EXTRA_NO_CONNECTIVITY) zawsze zwraca wartość false
- 11. Android BluetoothSocket.isConnected zawsze zwraca wartość false
- 12. File.exists() zwraca wartość false, gdy plik istnieje
- 13. .post wewnątrz jQuery.validator.addMethod zawsze zwraca wartość false
- 14. Dlaczego "wartośćAsNumber" zwraca wartość NaN jako wartość?
- 15. Dlaczego chrome.extension.getBackgroundPage() zwraca wartość null?
- 16. Dlaczego Activity.getPackageManager() zwraca wartość null
- 17. QThread emituje gotowy() sygnał, ale funkcja isRunning() zwraca wartość true, a isFinished() zwraca wartość false
- 18. Dlaczego os.path.isfile zwraca false?
- 19. Dlaczego 128 == 128 zwraca wartość false, ale 127 == 127 zwraca wartość true podczas konwersji na opakowania całkowite?
- 20. Forma jest nadal składać chociaż funkcję detektora zwraca wartość false
- 21. Android - Dlaczego onItemLongClick (...) zwraca wartość boolowską?
- 22. Dlaczego właściwość TIdMailBox.UnseenMsgs zwraca wartość 0?
- 23. Dlaczego self.class === MyClass zwraca false, a self.class == MyClass zwraca wartość true?
- 24. Porównanie dwóch identycznych ciągów zwraca wartość false w PHP
- 25. Android M FingerprintManager.isHardwareDetected() zwraca wartość false na Samsung Galaxy S5
- 26. os.path.isfile() zwraca wartość false dla istniejącego pliku Windows
- 27. Laravel Mail wysyła wiadomość e-mail, ale zwraca wartość false
- 28. checkdnsrr zawsze zwraca wartość false w systemie Windows
- 29. rails update_attributes zwraca wartość false podczas próby aktualizacji wartości db
- 30. Robotium. waitForActivity() zwraca wartość false dla wbudowanej aktywności w TabHostActivity
Skoro mnie pokonać na dobrą odpowiedź dodałem to, co miałem do tego, co dzieje się pod maską. –