a = Numeric.new # doesn't take an argument
Tôi không thể tưởng tượng trường hợp sử dụng cho việc này. Bạn có thể?Tại sao Ruby có Numeric.new?
a = Numeric.new # doesn't take an argument
Tôi không thể tưởng tượng trường hợp sử dụng cho việc này. Bạn có thể?Tại sao Ruby có Numeric.new?
Lớp Class
định nghĩa một phương pháp new
dụ. Và vì vậy phương pháp lớp học new
trên Numeric
chỉ là một sự nắm giữ từ đó - nó không làm bất cứ điều gì - nghĩ về nó như một trong những cơ quan di truyền mà động vật thừa hưởng từ tổ tiên xa xôi - như phụ lục trên con người.
Lưu ý rằng các lớp con của Numeric
chẳng hạn như Fixnum
và Float
và thân nhân của họ khám phá không xác định phương thức new
. Tôi đoán họ chỉ không bận tâm undefining nó cho Numeric
như trường hợp trực tiếp của lớp này không bao giờ thực sự tồn tại, và nó không có hại giữ nó xung quanh.
Vâng, đó là cách tôi phát hiện ra. chơi xung quanh trong irb, cố gắng Float.new ('NaN'), không (NoMethodError). Đi cho Numeric.new ("NaN"), kết thúc với một vô dụng (?) Numeric. – steenslag
Mọi thứ trong Ruby là một đối tượng, ngay cả các lớp học. Vì vậy, để không có một hàm tạo cho Numeric
có nghĩa là không có lớp Numeric
nào cả!
Hãy xem the docs. Nó chỉ đơn giản là một lớp cơ sở. Bạn sẽ không bao giờ (tốt, nó sẽ rất khó xảy ra, anyway :)) sử dụng nó trực tiếp.
Điều này sai. Nhiều classess Ruby không có phương thức 'new', xem: TrueClass, FalseClass, NilClass, Fixnum, Float, vv – horseyguy
Eh, một chi tiết nhỏ. Một lớp có thể định nghĩa phương thức 'mới' nếu nó muốn. Số không phải vì bạn có nghĩa là để có thể phân lớp nó và sử dụng nó như là một cơ sở chính mình. 'TrueClass' và những thứ tương tự không được sử dụng như thế này. – rfunduk
rằng 'chi tiết nhỏ' làm cho tuyên bố táo bạo này của bạn hoàn toàn không hợp lệ: "Vì vậy, để không có một nhà xây dựng cho số sẽ có nghĩa là không có lớp số ở tất cả!" – horseyguy
Bạn sẽ không bao giờ sử dụng lớp số theo cách đó. Đây là lớp cơ sở cho tất cả các kiểu số trong Ruby.
lớp số Ruby tạo thành một đầy đủ tháp số, cung cấp nhiều loại cơ quan đại diện các con số và đại diện số.
Nguồn: Ruby Tips: Numeric Classes
Nhưng bạn không giải thích tại sao 'mới' vẫn tồn tại :) – horseyguy
Bạn có nghĩa là 'Numeric.new' không phải' NumeriC# new' .... phương thức '#' có nghĩa là '' (nhưng trong trường hợp này 'new' là phương thức lớp) – horseyguy
Không biết. Đã sửa tiêu đề. Cảm ơn. – steenslag