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]?初始棒