【发布时间】:2017-11-14 14:17:34
【问题描述】:
def bubble_sort(array)
swaps = 0;
i = 0;
last = array.length - 1
while swaps > -1
if i == last
i = 0
last--
swaps = 0
if swaps < 1
swaps = -1
end
end
if array[i] > array[i+1]
temp = array[i]
array[i] = array[i+1]
array[i+1] = temp
swaps++
end
i++
end
end
这段代码有什么问题?没有逻辑错误,但我遇到了这些语法错误,不知道为什么。
bubble_sort.rb:22:语法错误,意外的keyword_end
bubble_sort.rb:26:语法错误,意外的keyword_end
【问题讨论】:
-
您的缩进错误。解决这个问题,问题将变得更加明显。请注意,
i++和i--不是有效的 Ruby,因为它没有++或--。您还应该避免使用无意义的;分隔符。 -
第一个代码块之后的
end是什么? -
这是针对没有正确缩进的函数。
-
语法错误消失,
++替换为+= 1,--替换为-= 1。逻辑错误仍然存在。 -
我真的很想知道哪个 Ruby 教程教这些东西。我的意思是,人们从哪里知道
i++在 Ruby 中甚至是合法的?文档中没有提到它(显然,因为它不合法),我知道的任何一本书中都没有提到它,我知道的任何教程中都没有提到它,一个人遇到语法错误的事实也应该是强烈暗示它不存在,Stack Overflow 上确实有几十个问题解释它不存在……那么谁告诉人们不存在呢?
标签: ruby if-statement while-loop conditional bubble-sort