为什么我无法访问实例变量?
let(:hotel2) { Hotel.new name: 'Premier Inn', rating: 1,
city: 'Leeds', total_rooms: 15, features: [] }
我在初始化中调用它但它不断抛出不正确的参数错误。
def initialize()
@name = name
@rating = rating
@city = city
@total_rooms = total_rooms
@features = features
end
有什么想法吗?
答案 0 :(得分:0)
您的初始化签名与您的主叫签名不符。您正在传递哈希,但没有收到哈希。有许多方法可以定义参数列表以使其工作。这是一个:
class Hotel
def initialize(hash)
@name = hash[:name]
@rating = hash[:rating]
@city = hash[:city]
@total_rooms = hash[:total_rooms]
@features = hash[:features]
end
end
This blog post概述了如何使用Ruby V2关键字参数。这将是定义initialization
的另一种可能更好的方法。这是一个例子:
class Hotel
def initialize(name: , rating:, city:, total_rooms:, features:)
@name = name
@rating = rating
@city = city
@total_rooms = total_rooms
@features = features
end
end
您可以为关键字参数设置默认值并使其成为必需参数。在这个例子中,它们都是强制性的。