2014-09-14 22 views
5

:: là gì?Có nghĩa là gì :: trong cú pháp Ruby?

@song ||= ::TwelveDaysSong.new 
+0

Tôi biết về không gian tên, nhưng tôi đã không nhìn thấy :: được sử dụng mà không có tiền tố. Tôi đoán đó là điều làm tôi bối rối. Bây giờ tôi hiểu rằng nó tham chiếu đến không gian tên đối tượng cấp cơ sở – archie

Trả lời

7

của Ruby :: (double dấu hai chấm bán)

hằng cấp cao nhất được tham chiếu bởi dấu hai chấm đôi

class TwelveDaysSong 
end 

a = TwelveDaysSong.new 
#I could wrote it like this too 
a = ::TwelveDaysSong.new 

module Twelve 
    class TwelveDaysSongs 
    end 
end 

b = Twelve::TwelveDaysSong.new 
#b is not equal to 
a = ::TwelveDaysSong.new 
#neither 
a = TwelveDaysSong.new 

Lớp học là liên tục quá vậy nếu bạn có một hằng số

HELLOWOLRD = 'hw' 

bạn có thể gọi nó như thế này ::HELLOWORLD

0

Return @song

Nếu @song là sai (ví dụ nó không tồn tại)
tạo một đối tượng mới của đối tượng ::TwelveDaysSong như @song

1

Đây là một phương pháp uể oải khởi tạo biến cá thể @song.

Nếu @song đã được đặt (thành một số giá trị trung thực, nghĩa là, không phải nil hoặc false), thì biểu thức chỉ đánh giá giá trị đó.

Nếu, tuy nhiên, @song chưa được đặt thành giá trị như vậy, thì nó sẽ tạo một phiên bản mới của lớp TwelveDaysSong và gán cho @song. Sau đó, như trước đây, biểu thức ước lượng giá trị của @song, nhưng giá trị đó bây giờ là một tham chiếu đến đối tượng TwelveDaysSong mới được tạo.

Việc sử dụng :: trên tên lớp có nghĩa là đó là lớp tuyệt đối, cấp cao nhất; nó sẽ sử dụng lớp cấp cao nhất ngay cả khi cũng có một lớp TwelveDaysSong được định nghĩa trong bất kỳ mô-đun hiện tại nào.

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