草庐IT

under_score_case

全部标签

ruby - 如何将此 case 语句更改为 if 语句?

我想检查节点属性的值。此case声明是我到目前为止所拥有的,并且它有效:casenode[:languages][:ruby][:host_cpu]when"x86_64"...when"i686"...end我想做的是使用if代替声明。这是我尝试过的:ifnode[:languages][:ruby][:host_cpu]?("X86_64")...end这是基于以下内容,哪个有效。ifplatform?("ubuntu")...end但是,我的尝试没有奏效。它在if上给出了一个语法错误行说有意外\n和$end预料之中。我发现执行if有两种方式.第一个是我在上面演示的那个,它(显然)

使用数组的具有多个变量的 Ruby case 语句

我想比较一个case语句的多个变量,目前正在考虑为Array覆盖case等于运算符(===)是最好的方法。这是最好的方法吗?这是一个示例用例:defdeposit_aprdeposit,apr#deposit:canbenilor2lengthArrayof[nilorFloat,String]#apr:canbenilorFloatcase[deposit,apr]when[[Float,String],Float]puts"#{deposit[0]}#{deposit[1]},#{apr*100.0}%APR"when[[nil,String],Float]puts"#{apr*1

ruby-on-rails - Ruby case 语句未按预期执行

仅供引用,使用Rails。给定user=User.find(1)当它应该返回self.do_something_with_user的结果时,这个case语句返回nil。defcase_methodcaseself.classwhenUserself.do_something_with_user#assumedoesnotreturnnilwhenSomeOtherClassself.do_something_elseelsenilendenduser.case_method#=>nil我错过了什么?使用pry,self.class==User返回true。

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有什么建议吗?提前致

将 snake_casing 转换为 PascalCasing 的 Ruby 正则表达式?

我创建了一个使用以下函数的网络框架:defto_class(text)text.capitalizetext.gsub(/(_|-)/,'')end将snake_cased或hyphen-cased的目录名称转换为项目的PascalCased类名。问题是,该函数只删除了_和-,并没有将下一个字母大写。使用.capitalize或.upcase是否有办法将您的snake/hyphen_/-cased名称转换为正确的PascalCased类名? 最佳答案 gsub(/(?:^|[_-])([a-z])?/){$1.upcaseunles

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