Tôi đã đi qua Ruby Koans và tôi đã tìm thấy about_open_classes.rb koan thú vị. Đặc biệt là thử nghiệm cuối cùng, nơi họ sửa đổi phương pháp Integer#even?
. Tôi muốn chơi xung quanh với khái niệm này vì vậy tôi đã mở Irb và cố gắng chạy Integer.respond_to?(:even?)
, nhưng với sự ngạc nhiên của tôi tôi đã sai. Sau đó, tôi đã thử Fixnum.respond_to?(:even?)
và nhận được sai. Tôi cũng đã thử Integer.respond_to?(:respond_to?)
và nhận được sự thật và khi tôi làm 2.even?
Tôi cũng nhận được sự thật. Tôi không biết chuyện gì đang diễn ra. Bất cứ ai có thể nói những gì tôi đang mất tích?Tại sao Integer.respond_to? (: Even?) Trả về false?
5
A
Trả lời
9
Một thể hiện của Fixnum sẽ respond_to? :even?
, nhưng Fixnum lớp tự sẽ không
>> 3.respond_to? :even?
=> true
>> 3.class
=> Fixnum
>> Fixnum.respond_to? :even?
=> false
>> Fixnum.class
=> Class
Bạn có thể thấy cách làm việc này bằng cách định nghĩa lớp thử nghiệm của riêng bạn:
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
Các vấn đề liên quan
- 1. Tại sao is_a? trả về false cho lớp Hash?
- 2. Tại sao QFile :: canReadLine() luôn trả về false?
- 3. Tại sao System.IO.File.Exists (đường dẫn chuỗi) trả về false?
- 4. Tại sao double.TryParse ("0.0000", out doubleValue) trả về false?
- 5. tại sao sql = FALSE luôn trả về true
- 6. Dictionary.ContainsKey Luôn Trả về False
- 7. get_browser() trả về FALSE
- 8. PrincipalContext.ValidateCredentials luôn trả về FALSE
- 9. string.matches (". *") Trả về false
- 10. int.TryParse() trả về false cho "#. ##"
- 11. Nếu call_user_func có nghĩa vụ trả về false thì sao?
- 12. EntityManager.contains() trả về false sau khi vẫn tồn tại()
- 13. HtmlElement.Parent trả về false parent
- 14. sd.canWrite() luôn trả về false
- 15. Khi mysql_query trả về false
- 16. curl_exec() luôn trả về false
- 17. Python path.exists() trả về False
- 18. isProviderEnabled (LocationManager.NETWORK_PROVIDER) trả về false
- 19. Tại sao os.path.isfile trả về Sai?
- 20. PHP in_array() luôn trả về false
- 21. "Trả về false" là gì? làm gì?
- 22. lý do tại sao có thể kiểm tra nếu (document.addEventListener) trả về false
- 23. Tại sao mô hình Backbone của tôi hasChanged() luôn trả về false?
- 24. Tuyên bố chuẩn bị Mysqli - Trả về False, nhưng tại sao?
- 25. tại sao strftime() trên cửa sổ trả về false? (Tôi không sử dụng% e)
- 26. Tại sao Type.IsByRef cho kiểu String trả về false nếu String là một kiểu tham chiếu?
- 27. Tại sao Request.IsSecureConnection trả về false khi đúng là mong đợi
- 28. Tại sao Url.IsLocalUrl trả về false nếu URL chứa một đoạn?
- 29. Tại sao biểu mẫu HTML của tôi vẫn gửi khi tôi trả về false từ onsubmit?
- 30. TryParseExact trả về false, mặc dù tôi không biết tại sao
Vì bạn đánh tôi cho một câu trả lời hay, tôi đã thêm vào những gì tôi đã có cho những gì đang xảy ra dưới mui xe. –