草庐IT

if-cases

全部标签

Ruby Hash/Array delete_if 没有 block

根据RubyHash/Array文档,如果没有给出block,delete_if方法返回一个枚举器。这有什么用?有人可以举例说明这种模式吗? 最佳答案 在Enumerator上定义了一些方法,为迭代器提供了灵active。我经常使用的一种方法是with_index。p%w[abcdef].delete_if.with_index{|_,i|i.even?}#=>["b","d","f"]如果不使用Enumerator类来完成,则必须定义各种方法,包括delete_if_with_index,这不是一件好事。

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

arrays - Ruby if else in array.each

这里是Ruby的新手。我试图在数组中放置一个ifelse语句,以便在某个模数==0时发送一个字符串。对于我来说,我无法在任何地方找到它。我相信有人会觉得它简单得可笑。a=*(1..100)a.each{|i|puts"three"ifi%3==0elsifputs"five"ifi%5==0elseputsi}只是不确定语法是否正确。还是ruby​​的新手,正在尝试学习语法。上学期上了C课,我的大脑一直想输入C语法。当我把它留作a=*(1..100)a.each{|i|puts"three"ifi%3==0}它工作正常,只是想弄清楚如何添加ifelse。感谢您的帮助。下面的回答真的很有

将 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 if 语法(两个表达式)

假设您正在使用Ruby的if语法,如下所示:iffoo==3:puts"foo"elsiffoo==5:puts"foobar"elseputs"bar"end有没有办法让Ruby在if语句中执行两件事,比如说,像这样:iffoo==3puts"foo"foo=1elsiffoo=...我怎样才能使用第一种语法将两个语句放入? 最佳答案 iffoo==3:puts"foo";puts"baz"elsiffoo==5:puts"foobar"elseputs"bar"end但是,我建议不要这样做。

ruby - 与伪造的 `if` block 内的赋值操作混淆

这个问题在这里已经有了答案:Idon'tunderstandrubylocalscope(5个答案)关闭7年前。我在ifblock中进行赋值操作,发现了下面的结果,这让我很惊讶:C:\>irb--simple-promptiffalsex=10end#=>nilpxnilx.object_id#=>4#=>nilpyNameError:undefinedlocalvariableormethod`y'formain:Objectfrom(irb):5fromC:/Ruby193/bin/irb:12:in`'在上面的代码中,您可以看到x局部变量已创建,即使它仅在伪造的ifblock中分

ruby - 如何重构长 if 语句

我有这个嵌套的if语句,但我不知道如何重构它...它非常简单,但我就是想不出来,希望有人能提供帮助。首先我有一个嵌套的if语句(不好):unlessrecord.valid?ifcondition_1action_1elsifcondition_2action_2elsifcondition_3action_3endend然后我尝试了这个,但看起来并没有好转(没有任何内容的if语句也很糟糕):ifrecord.valid?#donothingelsifcondition_1action_1elsifcondition_2action_2elsifcondition_3action_3e

ruby-on-rails - 另一种写法 : if some_variable && some_valiable. size == 2

在Ruby和RoR中,我经常发现自己测试对象是否存在,然后对象的属性是否符合某些条件。像这样:ifparams[:id]&¶ms[:id].size==40...dostuffend有没有更有效的方法来做到这一点?像这样的东西:ifparams[:id].size==40rescuefalse但没有使用救援? 最佳答案 在Rails2.3中,您可以使用Object#try方法:ifparams[:id].try(:size)==40#dostuffendtry在nil上调用(带任何参数)时将返回nil。希望这是有道理的。

ruby-on-rails - 没有运算符的 Ruby 惰性 if 语句

可以用ruby​​实现吗?variablename=trueifvariablenameputs"yes!"end代替这个variablename=trueifvariablename==trueputs"yes!"end编辑:还考虑拥有:variablename=0#whichcausedmyproblem我无法让它工作。ifpossible是这样的说法吗?我现在正在学习ruby​​,在PHP中是可能的,但我不确定如何在ruby​​中正确地做到这一点 最佳答案 当然可以除了nil和false之外的所有内容在ruby​​中都被视为t

do_two_simple_things if something_is_true 的 Ruby 习语

例如,这需要4行,对于这样一个简单的操作来说空间太大了:ifsomething_is_trueputs'error'returnend这个是单行的,但看起来很笨拙。ifsomething_is_true;puts'error';return;end我们可以做类似的事情吗#itwouldbegreatifthiswouldworkbecauseitisshortandreadableputs'error'andreturnifsomething_is_true 最佳答案 我不确定为什么您认为空间如此宝贵以至于您的原始代码“太多了”。给