草庐IT

Case-Sensitivity

全部标签

ruby - 在多个条件下使用 'case'

我正在尝试编写一个案例陈述,它着眼于两种情况,如下所示:roll1=rand(1..6)roll2=rand(1..2)result=case[roll1,roll2]when[1..3&&1]"Low/Low"when[4..6&&1]"High/Low"when[1..3&&2]"Low/High"when[4..6&&2]"JACKPOT!!"endputsresult我很乐意让这个工作。我更愿意了解我的示例失败的原因。编辑添加:感谢所有反馈!受到启发,我意识到结合这两个case变量可以让我将它们折叠成一个简单的switch语句的值...roll1=rand(1..6)roll2

ruby-on-rails - 在 Ruby 中,有没有比 'case - when' 更优雅的调用方法的替代方法?

在Rails3.1中,我想通过使用接受参数数据的create方法来创建一个嵌入式对象,但我想知道是否有比下面的case方法更优雅的方法:defmethod_call(obj,data)caseobjwhen'a'thenUser.create_a(data)when'b'thenUser.create_b(data)when'c'thenUser.create_c(data)endend我真的很想做类似下面的事情,但是由于我传递的数据,这会导致错误:defmethod_call(obj,data)User.send("create_#{obj}")(data)end有什么建议吗?提前致

ruby-on-rails - ruby 中 case when 语句的替代方案

我正在根据散列值分配一组值。我必须根据传入哈希键的值将值分配给另一个哈希键。传入的哈希中有超过10个键(因此超过10个案例)。我想最小化代码。对于这种情况,是否有其他方法可以缩短代码。@hash1.eachdo|h1|caseh1.mapped_fieldwhen'value1'@hash2[h1.field_id]=value_1when'value2'@hash2[h1.field_id]=value_2when'value3'@hash2[h1.field_id]=value_3when'value4'@hash2[h1.field_id]=value_4when'value5'

ruby - 有没有比使用自定义 case 语句更实用的方法来用 Ruby 编写这个?

想象一下下面的代码:classSimpleLetterdefvalues("a".."z").to_aenddef===(other)values.include?(other)endendclassVowel我本可以选择任何其他类(class),我只是以它们为例。我非常喜欢Scala的match和提取器,我认为这可能是用Ruby编写相同内容的好方法。有没有更好的方法来编写上面的代码而不必实例化新对象以便我可以调用它们的===方法?为了避免不必要的帖子,是的,我知道我可以这样做:caseletterwhen["a","e","i","o","u"].include?(letter)#.

ruby - 如何在单个对象中封装许多 Ruby case 条件?

我想简化在多个条件适用时执行单个操作的代码。这是一个简化的示例:casebuttonwhen'up','upper-right','right','lower-right','down','lower-left','left','upper-left'move_direction(button)elsedo_something_elseend如果我可以将这些选项封装到类或常量之类的东西中,那将会很有帮助,但我不确定该怎么做,或者是否有可能。如何封装这些条件? 最佳答案 您可以只使用数组splat。VALID_DIRECTION=%w

ruby - 写一个更好的 switch-case 函数?

我是一个Ruby新手。我怎样才能为这个功能写得更好?我可以改用哈希表吗?defreadable_status(status)ifstatus=="1"return"go"endifstatus=="2"return"stop"endifstatus=="3"return"die"endend 最佳答案 如果您想使用散列(根据您的问题),您可以这样做:defreadable_status(status)readable={"1"=>"go","2"=>"stop","3"=>"die"}readable[status]||"defau

ruby - 我可以在 case 语句中使用 .include?() 吗? ruby

我已经开始学习Ruby。我有一个构建游戏的小项目,并尝试创建一个函数来接收用户输入并相应地处理它。defGame.listenerprint">"whilelisten=$stdin.gets.chomp.downcasecaselistenwhen(listen.include?("navigate"))puts"Navigateto#{listen}"breakwhen($player_items.include?(listen))Items.use(listen)breakendputs"Notaoption"print">"endend但是,case语句无法检测到我输入了nav

javascript - Ruby case-when 与 JavaScript switch-case

我来自Ruby世界,进入JavaScript世界。Ruby语言的一个特性是使用case语句来评估目标值:my_val=casemy_varwhen"var1"then"value1"when"var2"then"value2"else"value3"end#my_valevaluatedtoaspecificvalueputsmy_val我可以像上面那样用JavaScript做一些简洁的事情吗?这是我得到的最接近的:letmyVal=null;switch(myVar){case"var1":myVal="value1";break;case"var2":myVal="value2";

Ruby - case 语句的隐式对象

在Ruby中,有没有办法获取case语句的隐式对象?case2+2when'2'puts'2'elseputs"#{some_object}"end其中'some_object'将是case评估的任何语句的返回值 最佳答案 不,没有。您必须执行以下操作:some_object=2+2casesome_objectwhen'2'puts'2'elseputssome_objectend或casesome_object=2+2when'2'puts'2'elseputssome_objectend

ruby - 相当于 ruby​​ 的 case/when 语句中的 `break`?

我正在寻找一个跳过whenblock执行的语句,类似于breakfor循环。这可能吗?我想避免的是这样的构造:casenwhen1ifvalidfoo.barendwhen2ifvalidfoo.fooend更理想的代码块应该是这样的:casenwhen1breakunlessvalidfoo.barwhen2breakunlessvalidfoo.fooend显然,break不起作用。 最佳答案 等效但更简洁:casenwhen1foo.barifvalidwhen2foo.fooifvalidendendof如果条件真的适用于所