gpt4 book ai didi

Ruby 删除 Case 语句中的隐式中断? (如何制作像 Switch 一样的外壳)

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:15 25 4
gpt4 key购买 nike

x='bob'
case x
when "bob"
puts 'it stops here'
when 'bob'
puts 'but i want it to stop here'
end

有没有办法让 case 语句表现得像 vanilla switch?这样它会在爆发前循环遍历所有“时间”?我很惊讶 ruby​​ 的行为几乎与 elsif 相同。

最佳答案

迈克尔,

虽然您的示例有点误导(“bob”同时匹配“bob”和“bob”,因此第一种情况总是匹配),但您可以像下面的 if_test 方法一样使用简单的 if :

def case_test(x)                                                  
puts case
when x > 3
"ct: #{x} is over 3"
when x > 4
"ct: #{x} is over 4"
end
end

case_test(4)
case_test(5)

def if_test(x)
puts "it: #{x} is over 3" if x > 3
puts "it: #{x} is over 4" if x > 4
end

if_test(4)
if_test(5)

这会产生:

ct: 4 is over 3
ct: 5 is over 3
it: 4 is over 3
it: 5 is over 3
it: 5 is over 4

请注意,您还可以在 when 中使用多个语句,这可能对您有帮助或没有帮助,具体取决于您的实际用例:

def many(x)              
case x
when 'alice','bob'
puts "I know #{x}"
else·
puts "I don't know #{x}"
end
end

many('alice')
many('bob')
many('eve')

产量:

I know alice
I know bob
I don't know eve

关于Ruby 删除 Case 语句中的隐式中断? (如何制作像 Switch 一样的外壳),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10759344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com