Mọi thứ trong ruby là một đối tượng? Điều này có bao gồm Fixnum
s không?Mọi thứ đều là một vật thể trong ruby?
Trả lời
Phụ thuộc vào ý bạn là "mọi thứ". Fixnum
s, như những người khác đã chứng minh. Các lớp học cũng như các trường hợp của lớp Class
. Phương thức, toán tử và khối không, nhưng có thể được bao bọc bởi các đối tượng (Proc
). Nhiệm vụ đơn giản là không, và không thể. Các tuyên bố như while
cũng không thể và không thể. Nhận xét rõ ràng cũng thuộc nhóm thứ hai.
Hầu hết mọi thứ thực sự là vấn đề, tức là bạn muốn thao tác, là đối tượng (hoặc có thể được bao bọc trong đối tượng).
+1 Yêu thích các ví dụ ngược lại này. Nói rằng tất cả mọi thứ là một đối tượng mà không xem xét tất cả mọi thứ là hơi tẩy não :) – Jakob
+1 - Tuyệt vời đó là những gì tôi đã cố gắng để nói trong một số câu hỏi khác, từ đó câu hỏi này đã được sinh ra. – RubyDubee
Tại sao không phải 'while' là một đối tượng? – Ziggy
Yes everything is an object in ruby, và bao gồm Fixnum
Yup.
> Fixnum.is_a?(Object) #=> true
Để xem chuỗi thừa kế:
> pp Fixnum.ancestors
[Fixnum,
Integer,
Precision,
Numeric,
Comparable,
Object,
...
Kernel]
=> nil
Yes. Fixnum
là một lớp, được kế thừa từ Integer
, được kế thừa từ Numeric
, cuối cùng được kế thừa từ Object
.
Hoặc, tại sao bạn không hỏi? :)
1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true
Đọc Ruby info và documentation trên trang web cũng là một ý kiến hay.
Ruby doen't có bất kỳ nguyên thủy (như int, char, vv trong java), do đó, mọi giá trị (bất cứ điều gì có thể ngồi bên phải của một câu lệnh gán) là một đối tượng. Tuy nhiên, các câu lệnh kiểm soát, phương thức và các tính năng khác của cú pháp ngôn ngữ thì không.
Thực tế mọi thứ trong Ruby là một đối tượng, ngoại trừ cấu trúc điều khiển. Có hoặc không nằm trong phạm vi một phương thức, khối mã hoặc toán tử là hoặc không phải là một đối tượng, chúng được biểu diễn dưới dạng Đối tượng và có thể được nghĩ như vậy.
Hãy khối mã ví dụ:
def what_is(&block)
puts block.class
puts block.is_a? Object
end
> what_is {}
Proc
true
=> nil
Hoặc cho một Phương pháp:
class A
def i_am_method
"Call me sometime..."
end
end
> m = A.new.method(:i_am_method)
> m.class
Method
> m.is_a? Object
true
> m.call
"Call me sometime..."
Và các nhà khai thác (như +, -, [], < <) đều được thực hiện như phương pháp:
class String
def +
"I'm just a method!"
end
end
Đối với những người tham gia lập trình lần đầu tiên, điều này có ý nghĩa gì trong ap ý thức thực tế là tất cả các quy tắc mà bạn có thể áp dụng cho một loại đối tượng có thể được mở rộng cho những loại khác. Bạn có thể nghĩ về một String, Array, Class, File hoặc bất kỳ Class nào mà bạn định nghĩa là hành xử theo cùng một cách. Đây là một trong những lý do tại sao Ruby dễ dàng nhận và làm việc với hơn một số ngôn ngữ khác.
- 1. Mọi thứ đều là Biểu thức
- 2. Mọi thứ đều là một đối tượng trong python như ruby?
- 3. cách rb_protect mọi thứ trong ruby
- 4. Chèn một nhân vật đều đặn trong một danh sách
- 5. nginx như là một proxy cho NodeJS + socket.io: mọi thứ đều OK ngoại trừ thông điệp lớn
- 6. Loại bỏ tất cả mọi thứ sau khi nhân vật (và cũng có thể ký tự)
- 7. ruby regex - làm thế nào để phù hợp với tất cả mọi thứ cho đến nhân vật -
- 8. Không thể truy cậpWSDLException trong tệp nhật ký của tôi nhưng mọi thứ đều hoạt động tốt. Chuyện gì vậy?
- 9. Ruby, Qt và các vật dụng của bên thứ ba
- 10. Mọi thư viện ccTalk đều có sẵn?
- 11. Làm thế nào để kết hợp mọi thứ với sự xuất hiện thứ hai của một nhân vật?
- 12. Nhận tất cả mọi thứ sau và trước nhân vật nào đó trong SQL Server
- 13. Nhận mọi mục thứ n trong mảng
- 14. Ruby, chạy lệnh linux từng cái một, bằng SSH và LOG tất cả mọi thứ
- 15. Đang thực hiện đăng nhập bằng https nhưng sau đó mọi thứ trong http đều hơi vô nghĩa?
- 16. Thay thế/loại bỏ tất cả mọi thứ giữa hai nhân vật
- 17. Phải mọi hoạt động đều có bố cục?
- 18. Mọi thứ biên dịch, nhưng Resharper đánh dấu mọi thứ màu đỏ?
- 19. Giữ mọi thứ trong một đoạn mã bytecode đơn lẻ?
- 20. Xóa mọi hàng thứ n trong một khung dữ liệu
- 21. Ruby on Rails: Làm thế nào để chạy mọi thứ trong nền?
- 22. Làm thế nào bạn có thể trả lại mọi thứ sau dấu gạch chéo cuối cùng (/) trong chuỗi Ruby
- 23. không thể đẩy vào github: mọi thứ được cập nhật
- 24. SQL WHERE column = mọi thứ
- 25. làm thế nào tôi có thể sửa chữa xcode biên dịch mọi thứ mọi lúc?
- 26. Mọi thứ nhanh hơn ImageMagick?
- 27. Có thể lấy "mọi thứ" từ javax.naming.InitialContext không?
- 28. RewriteRule chuyển hướng mọi thứ ngoại trừ một thư mục
- 29. Bắt mọi phần tử thứ n của một chuỗi
- 30. Cả ruby lẫn irb đều không thể tải tệp .rb trong thư mục hiện tại
Tôi không nghĩ rằng phương pháp trong ruby có thể được đối xử như đối tượng. –