Bạn đang làm nó đúng cách. Các phương thức lớp (tương tự như các phương thức 'tĩnh' trong C ++ hoặc Java) không phải là một phần của thể hiện, vì vậy chúng phải được tham chiếu trực tiếp.
Trên lưu ý đó, trong ví dụ của bạn, bạn sẽ được phục vụ tốt hơn khi biến 'default_make' thành một phương thức thông thường:
#!/usr/bin/ruby
class Truck
def default_make
# Class method.
"mac"
end
def initialize
# Instance method.
puts default_make # gets the default via the class's method.
end
end
myTruck = Truck.new()
Các phương thức lớp hữu ích hơn cho các hàm kiểu tiện ích sử dụng lớp. Ví dụ:
#!/usr/bin/ruby
class Truck
attr_accessor :make
def default_make
# Class method.
"mac"
end
def self.buildTrucks(make, count)
truckArray = []
(1..count).each do
truckArray << Truck.new(make)
end
return truckArray
end
def initialize(make = nil)
if( make == nil )
@make = default_make()
else
@make = make
end
end
end
myTrucks = Truck.buildTrucks("Yotota", 4)
myTrucks.each do |truck|
puts truck.make
end