我試圖降低下面一行我可以使用三元運算符,而不是while循環
def this_method(week)
i = 0
while i < array.length
yield(week[i])
i += 1
end
end
week.each do |week|
puts week
end
我試圖降低下面一行我可以使用三元運算符,而不是while循環
def this_method(week)
i = 0
while i < array.length
yield(week[i])
i += 1
end
end
week.each do |week|
puts week
end
與其他人一樣,我感到困惑的例子(沒有定義array
,並且this_method
不會被調用)。但你當然不需要while循環。我只是用Integer#times
的方法,因爲你正在做不使用數組值:
array.length.times {|i| yield week[i]}
#each_index
(其中公羊的建議)的作品一樣好。
但如果array
實際上,就是要week
,然後它會更簡單:
week.each {|x| yield x}
我不知道爲什麼你要創建一個只回收#each
雖然方法。
沒有while循環,你不能。三元運算符是一個條件表達式,while是一個循環表達式。
但是,在Ruby中,您通常使用枚舉器,而不是使用while。您的代碼可以改寫爲
def this_method(week)
array.each_with_index { |item, i| yield(week[i]) }
end
是什麼我也不清楚,有沒有array
變量從何而來。即使在你的例子中,這樣的變量也沒有定義。
對不起,數組應該是'星期'。我一直在玩它,分配數組不同的數組。 – HandDisco
對於因爲行,您可以使用Array#each_index
:
array.each_index {|i| yield week[i] }
if
在任何形式下檢查條件只有一次。
while
另一方面,可以多次檢查條件。
好吧,如果你不喜歡與普查員其他的答案,同時以不同的形式,你可以使用:
def this_method(week)
i = -1
yield(week[i]) while (i+=1) < array.length
end
回答是否定的。您不能使用三元運算符來替換while循環。每個用例都有不同的用例。 – ram
我能想到的唯一辦法是將while循環轉換爲函數,以便我可以調用循環 - 這是否是最好的方法? – HandDisco
你爲什麼想這樣做?三元運算符可能會簡化一些操作,但經常會使您的代碼在重新訪問時難以維護/理解。 – simonmorley