加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby删除Case语句中的隐式break? (如何制作像Switch这样的案例)

发布时间:2020-12-17 04:00:08 所属栏目:百科 来源:网络整理
导读:x='bob'case xwhen "bob"puts 'it stops here'when 'bob'puts 'but i want it to stop here'end 反正是否使案例陈述表现得像香草开关?那么它会在爆发之前循环通过所有“何时”?令我惊讶的是,ruby的表现几乎与elsif相同. 解决方法 迈克尔, 虽然你的例子有点
x='bob'
case x
when "bob"
puts 'it stops here'
when 'bob'
puts 'but i want it to stop here'
end

反正是否使案例陈述表现得像香草开关?那么它会在爆发之前循环通过所有“何时”?令我惊讶的是,ruby的表现几乎与elsif相同.

解决方法

迈克尔,

虽然你的例子有点误导(‘bob’匹配’bob’和’bob’所以第一种情况总是匹配),你可以使用简单的if,如下面的if_test方法:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读