gpt4 book ai didi

Ruby - 方法调用数组中的对象

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:39 24 4
gpt4 key购买 nike

我正在为一个学校的 Ruby 项目工作,遗憾的是我无法在我的文献中找到这个问题的答案。

我有一系列露营地,每个露营地都有一位客人。我像这样初始化地段:

lots = Array.new

for i in (1..36)
lots[i] = Lot.new(i)
end

再往下,我创建了一个 Guest 对象,对其进行了初始化,现在我想将 Guest 添加到我的 Lot 中。 Lot 类中的方法如下所示:

def AddGuest(guest)
@guest = guest
end

当我想调用该方法时,问题就来了,因为 LotArray 中。

lots[lotnumber].AddGuest(guest)

这个调用给我错误:

undefined method `+@' for #<Guest:0x2c1ff14> (NoMethodError)

我使用了 require,所以类之间相互了解。我很难理解 Ruby,我的错误可能是我尝试访问 Array 类中的 AddGuest 方法吗?我习惯用 C++ 做这样的事情。

下面是完整的源代码(至少是相关部分)。

整个Lot类:

class Lot

def initialize(number)
@gauge = rand(2000) + 2000
@number = number
@guest = false
end

def Occupied()
return @guest
end

def AddGuest(guest)
@guest = guest
end

def RemoveGuest()
@guest = false
end

end

部分main.rb

#includes
require 'guest'
require 'lot'

#initiate comparison variables
userInput = "0"
numberOfGuests = 0
foundLot = false
guests = Array.new
lots = Array.new

#initialize lot list
for i in (1..36)
lots[i] = Lot.new(i)
end

省略玩家输入

#make sure lot is not taken
while foundLot == false do
lotnumber = rand(35)+1
if lots[lotnumber].Occupied() == false then
foundLot = "true"
end
end
foundLot = false

guest = Guest.new(firstName, lastName, adress, phone, arrival, lotnumber)
guests.insert(numberOfGuests, guest)
numberOfGuests++

lots[lotnumber].AddGuest(guest) #this is where error hits

end

end

end

最佳答案

该错误似乎与您使用++ 运算符有关,这很自然地在 C++ 中受支持,但在 Ruby 中不受支持。

等价于:

numberOfGuests += 1

关于Ruby - 方法调用数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com