上司(编码员)给我的代码进行剖析和理解。一条逻辑正在努力,因为我无法正确看待它。他们正在度假,无法使用。
def check_in_guests(guests)
checked_in_guests = 0
return checked_in_guests unless is_available?(guests)
guests.each do |guest|
next unless guest.sufficient_funds_for_entry?(@room_cost)
check_in_guest(guest)
checked_in_guests += 1
end
end
除非is_available?
在那里不起作用。
def is_available?(guests)
return number_of_guests <= free_spaces && free_spaces != 0
end
如果有多个guest虚拟机而不是空闲空间,则该函数返回false。但是,如果有多个guest虚拟机而不是可用空间,则上述代码将运行并执行相关操作,这些操作只应在guest虚拟机低于可用空间时运行。有任何想法吗?我的老师弄错了吗?它应该是而不是除非?我错过了什么吗?
由于
答案 0 :(得分:0)
def check_in_guests(guests)
checked_in_guests = 0
return checked_in_guests unless is_available?(guests)
guests.each do |guest|
next unless guest.sufficient_funds_for_entry?(@room_cost)
check_in_guest(guest)
checked_in_guests += 1
end
end
def is_available?(guests)
return number_of_guests <= free_spaces && free_spaces != 0
end
如果is_available?
返回false,则代码正在执行的操作是返回已签入来宾的总数。您可以将unless
视为if not
。然后我们可以查看is_available?
方法,我将假设number_of_guests
与guests.length
相同,同时假设guests
作为数组传入。看起来这个方法是一个类的一部分,所以我猜测free_spaces
是先前定义的。
让我们使用一些具体的例子,比如你有10个空闲空间和15位客人,没有办法检查每个人,所以number_of_guests
小于free_spaces
,所以is_available?
返回false ,check_in_guests
返回checked_in_guests and not execute the
。each`块。
如果有10个空格和5个guest,则return语句不会执行,我们执行.each
块。