Ruby 为什么我的剧本挂起来了?

Ruby 为什么我的剧本挂起来了?,ruby,Ruby,我花了很长时间试图弄明白为什么这会被挂起来。我假设这与我为if语句格式化|的方式有关: rods = { :rod1 => [3,2,1], :rod2 => [], :rod3 => [] } init_rod = gets.chomp.to_sym if ((init_rod != :rod1 || init_rod != :rod2) || init_rod != :rod3) print "

我花了很长时间试图弄明白为什么这会被挂起来。我假设这与我为
if
语句格式化
|
的方式有关:

  rods = {
        :rod1 => [3,2,1],
        :rod2 => [],
      :rod3 => []
           }  

init_rod = gets.chomp.to_sym
if ((init_rod != :rod1 || init_rod != :rod2) || init_rod != :rod3)
  print "Type in \"rod1\", \"rod2\", or \"rod3\": "
elsif rods[init_rod].empty?
  print "Rod has no discs. Select another rod other than #{init_rod}: "
else 
  disc = rods[init_rod].pop
end

它处于挂起状态,因为您已指示它使用
get
等待输入


只需事先打印一张
,或盲目打字即可。它会起作用。

你可能想要一个链
&&
而不是一个链
|
,因为如果它不是一个或不是另一个,那么它必须始终是真的,因为如果不是第一个,它就不需要满足第二个或第三个。
如果((init_rod!=:rod1&&init_rod!=:rod2)&&init_rod!=:rod3)
或更惯用的Ruby将使用数组和
include?
if![:rod1,:rod2,:rod3]。包括吗?哦,我真傻。现在完全有道理了。包括什么?这样做的方式更干净。thanks@MichaelBerkowski:我更喜欢
,除非[:rod1,:rod2,:rod3]?初始棒