2012-10-06 75 views
23

Trong Ruby là những gì là sự khác biệt giữa hai (trong code):Sự khác biệt giữa. và #

  • Class.method
  • Class#method
+0

Trong mã, đầu tiên là cuộc gọi phương thức trong khi cuộc gọi thứ hai là nhận xét. –

Trả lời

24

Định dạng băm (phương pháp lớp #) không phải là ruby ​​hợp lệ, nhưng được sử dụng trong tài liệu để mô tả phương pháp thể hiện.

Phương pháp lớp thường được ghi lại bằng cách sử dụng dấu hai chấm (phương pháp Class ::).

Bạn sẽ thấy ví dụ về cả trong các tài liệu ruby ​​(ví dụ http://www.ruby-doc.org/core-1.9.3/String.html)

Định dạng chấm được sử dụng trong mã khi thực sự gọi một phương pháp học (Class.method), mặc dù tôi đã thấy một số người (thật không may) sử dụng nó thay thế cho nhau bằng dấu hai chấm hoặc băm trong tài liệu.

22

Đó là một quy ước đặt tên.

  • sử dụng bảng #method cho các phương pháp dụ
  • sử dụng dấu chấm .method cho các phương pháp lớp

Xem: How to name RSpec describe blocks for methods

+0

dựa trên bài đăng blog siêu terse đó một mình? Không nên định dạng tài liệu theo sau, tức là, 'Class :: method' cho một phương thức lớp? – Todd

+0

Tôi đang dùng cdn trên cái này. Tài liệu Ruby là một nguồn kinh điển, bài đăng trên blog không có thẩm quyền và '.method' gây nhầm lẫn vì tất cả các phương thức đều được gọi theo cách đó. Bên cạnh đó, hằng số lớp được truy cập thông qua '::' do đó nó có ý nghĩa. –

2

Class#method không phải là mã hợp lệ. Nó chỉ được sử dụng trong tài liệu. phương thức nên là một phương thức thể hiện.

Class.method hoặc object.method là phương pháp thực tế thuộc về đối tượng. Lớp cũng là một đối tượng. Đó là mã hợp lệ.

Các vấn đề liên quan