首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >` `initialize':未定义的方法` `gauge‘(NoMethodError)

` `initialize':未定义的方法` `gauge‘(NoMethodError)
EN

Stack Overflow用户
提问于 2010-09-11 02:49:47
回答 1查看 1.6K关注 0票数 0

谁知道为什么我会收到这个错误:initialize': undefined methodgauge‘for # (NoMethodError)?!我的意思是,我正在使用attr_accessor作为gauge的getters和setters,但它仍然说我没有声明它。我在下面发布了一段代码。提前谢谢。

代码语言:javascript
复制
class ParkingLotGuest < Guest

attr_accessor :gauge, :electricity_bill, :type_of_stay  

def initialize (name, address, phone, arrival, lives_where, type_of_stay, guest_wishes_electricity)
    super(name, address, phone, arrival, lives_where)
    @type_of_stay = type_of_stay
    @electricity_bill = 0 
    @gauge = 0;
    if (guest_wishes_electricity[0,1] == "j")
        @gauge = lives_where.gauge
    end
end

下面是parking_lot类的代码:

代码语言:javascript
复制
class Parking_Lot

attr_accessor :nr
    attr_accessor :gauge
attr_reader :electricity_meter

# Initiates a new caravan plot with the number nr and a electricity meter between
# 2000 och 4000.
def initialize (nr)
    @nr = nr
            @gauge = gauge
    @electricity_meter = 4000-rand(2000)
end

# increases the electricity meter for use with a random amount between 
# 10-80 kWh per 24 h.
def increase_meter(days)
    generatedUse = (10+rand(70))*days
    puts "Increases the meter with " + generatedUse.to_s + " kWh."
    @electricity_meter += generatedUse
end

# Returns a string representation of the camping plot.
def to_s

  "Plot #{@nr+1} Electricity meter: #{@electricity_meter} kWh"

end 
end

露营类中的代码。

代码语言:javascript
复制
@staticGuests = Array[   
    ParkingLotGuest.new("Logan Howlett", "Tokyo", "07484822", 1, @parking_lots[0], "Husvagn", "j", @gauge), 
    ParkingLotGuest.new("Scott Summers",    "Chicago", "8908332", 2, @parking_lots[1], "Husbil", "j", @gauge),
  ParkingLotGuest.new("Hank Moody",     "Boston", "908490590",23, @parking_lots[2], "Tält", "n", @gauge),
  CabinGuest.new("Jean Grey", "Detroit", "48058221", 4, @parking_lots[3]['Wolverine']),
  CabinGuest.new("Charles Xavier",  "Washington DC", "019204822", 5, @parking_lots[4]['Thanos'])
]                                                                                                                      
EN

回答 1

Stack Overflow用户

发布于 2010-09-11 04:30:55

更仔细地查看错误:

代码语言:javascript
复制
undefined method `gauge' for #<Parking_Lot:0x10017c860 @electricity_meter=3622, @nr=0> (NoMethodError) 

这就是说,Parking_Lot的一个实例收到了一个名为gauge的方法的方法调用,但它没有gauge方法。

在这一行中,只有一个方法调用。

代码语言:javascript
复制
@gauge = lives_where.gauge

@gauge = ...直接赋值给实例变量@gauge,绕过了setter方法,所以不是这样的。

lives_where.gauge可能就是人们所抱怨的。lives_whereParking_Lot吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3687448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档