Ruby là ngôn ngữ hướng đối tượng hoàn toàn. Trong ruby, tất cả mọi thứ là một đối tượng & do đó, thuộc về một số lớp. ví dụ 5
thuộc về Object class
Ruby có thực sự là một ngôn ngữ hướng đối tượng đầy đủ không?
1.9.3p194 :001 > 5.class
=> Fixnum
1.9.3p194 :002 > 5.class.superclass
=> Integer
1.9.3p194 :003 > 5.class.superclass.superclass
=> Numeric
1.9.3p194 :005 > 5.class.superclass.superclass.superclass
=> Object
1.9.3p194 :006 > 5.class.superclass.superclass.superclass.superclass
=> BasicObject
1.9.3p194 :007 > 5.class.superclass.superclass.superclass.superclass.superclass
=> nil
như vậy, chúng ta phải gọi tất cả các phương pháp bằng cách đặt trước tên lớp/đối tượng như trong Object_name#method_name
. Ví dụ:
5.times{|i| puts i}
bây giờ, đường ray có những cái gọi là những người giúp đỡ như stylesheet_link_tag
, javascript_include_tag
, form_for
vv mà làm theo Object_name#method_name
cú pháp này, do đó, tôi đoán họ là chức năng chỉ bình thường.
vì vậy câu hỏi của tôi là
- những đường ray giúp việc là gì?
- Nếu chúng chỉ hoạt động & thì không được kế thừa từ bất kỳ lớp nào. Điều đó không trái với yêu cầu được thực hiện nói - bằng ruby,
everything a object & there are no primitives
. Ví dụ: mọi người trích dẫn số5.+(6)
cho biết ngay cả các toán tử chỉ là các phương thức đơn giản?
Khi bạn thấy phương pháp gọi mà không cần nhận rõ ràng, sau đó người nhận là 'self'. Làm thế nào chính xác bạn đã kết luận rằng "tất cả mọi thứ là một đối tượng" là không đúng sự thật? –
Ồ, tôi không biết về 'self'. Tôi đoán tôi đã sai, cảm ơn! – CuriousMind
Tôi sẽ nâng cấp câu trả lời này lên một câu trả lời :) –