我对这段代码有疑问,因为出于某种原因我无法使用方法length
:
def comidayprop()
aux=""
tam=@comida.lenght
i=0
for i in (0..tam-1)
aux<<"- #{@comida[i]}#{@prop_aprox[i]}#{@prop_exact[i]}"
i+=1
aux+="\n"
end
"#{aux}"
end
稍后,我使用它来显示aux
中保存的内容:
def to_s
"Menú basado en #{@tipo}:\n#{m_nombre}\n#{comidayprop}\n#{vct}\n"
end
我尝试使用count
和size
代替length
,但它们不起作用。
答案 0 :(得分:2)
首先,您写了lenght
而不是length
。
然后,您正在调用的对象length
为nil,这可能意味着它未正确初始化或存在一些丢失的数据。
此外,您无需使用i
增加i = i+1
,这是由for
循环完成的。顺便说一句,使用each
被认为是比for
更好的做法。
最后,当"#{aux}"
已经是字符串时,aux
只是aux
。
只要它是零,您就无法拨打size
,count
或@comida
上的任何有趣内容。
您的代码可能会缩短一点。
当@comida
为零时,此字符串将返回空字符串。但@comida
是否可能为零?:
def comidayprop
aux=""
(@comida || []).each_with_index do |x,i|
aux<<"- #{x}#{@prop_aprox[i]}#{@prop_exact[i]}\n"
end
aux
end