有沒有人有一個想法,爲什麼這個腳本不工作?
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end
它返回:
syntax error, unexpected $end, expecting keyword_end
有沒有人有一個想法,爲什麼這個腳本不工作?
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end
它返回:
syntax error, unexpected $end, expecting keyword_end
你缺少兩個 「結束」 語句。
一爲「如果」
另一個爲「而」
非常感謝!事實上,我嘗試了兩個「結束」,但這一個需要三個,我完全錯過了def的結局! – user2170092 2013-03-14 13:58:27
你缺少一個右結束
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end #<--- needed
end #<--- also needed
end
看起來你缺少一對夫婦的「結束」 S在那裏。
def multiples_three (n)
i=1
while i<n
if i%3==0
print "#{i}"
i=i+1
elsif
i=i+1
end
end
end
正如其他人所說的,你錯過了一些目標...並且沒有條件的裸露的elsif讓我感到困惑;如果你實際上沒有測試某些東西,你需要別的東西。
至於造型,你應該在Ruby中使用兩個空格:
def multiples_three(n)
i=1
while i<n
if i % 3 == 0
print i # no need to put in string and interpolate if it is by itself
i=i+1
else
i=i+1
end
end
end
但是更多的紅寶石的方式來做到這一點,woud是我們的迭代器,範圍和返回數組值,而不是直接從印刷的功能:
def multiples_three(n)
(1..n).select{|i| i % 3==0 }
end
puts multiples_three(12).join("\n")
3
6
9
12
=> nil
事實上,紅寶石使這麼簡單,我甚至不會寫這個函數。
Ruby不是Python。如下所述,你錯過了'if'塊的結束'end'語句。另外,在風格上,Ruby代碼使用兩個空格來縮進,而不是四個或八個,絕對不是製表符。如果你的代碼永遠不會傳遞給另一個開發者,那麼你可以逃脫另一個標準,但是如果你沒有在我工作的團隊中遵循這個標準,那麼你會很快聽到它的聲音,之後立刻就會發出咆哮聲和gnashing聲牙齒。 – 2013-03-14 14:04:37
沒有條件的elsif也是一個問題 – DGM 2013-03-14 14:56:58