草庐IT

if-cases

全部标签

ruby - : return if not nil 的简写

我使用变量缓存来减少执行时间,如下所示:defsome_methodreturn@varif@var[someothercodethatgetsexecutedonlyonce]endreturn@varif@var有简写吗?如果它是我使用的单行方法:@var||=[somemorecode]可以用多行方法完成类似(简短)的事情吗? 最佳答案 我用这个:@var||=begin#...end 关于ruby-:returnifnotnil的简写,我们在StackOverflow上找到一个类

ruby-on-rails - 多个 model.save's in 1 if condition with an unless

我正在尝试保存一个response并保存一个issue如果它在一种情况下不是nil所以我没有多个if/else条件使此逻辑复杂化。对于@response存在且issue为nil的用例,这不会进入ifblock。是否有明显的东西我没有看到,或者我不能像这样在一行中写下我的逻辑?注意:我知道应该使用事务,但我现在只是想建立一个工作原型(prototype)。if@response.save&&(issue.saveunlessissue.nil?)#Doesnotgetintotheifblockwhen@responseexistsandissueisnilp'insave'format

ruby - 基于 if else 的三元运算符

如果我有以下ifelse语句ifa.present?&&b.value=='N'b=testelsifa.present?&&b.value=='Y'b=guestend我可以为此编写三元运算b=(a.present?&&b.value=='N')?"test":"guest"但在这个三元运算符中,我不是在寻找条件b.value=='Y',它可能是其他的'd'或'e'。我如何更新三元运算符以验证if和elsif中的两个条件? 最佳答案 对于这样的事情,您可能希望使用一个简单的查找表来消除一些逻辑:EQUIVALENT={'Y'=>'

使用数组的具有多个变量的 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 - 有没有更好的方法在 if 语句中编写多个 OR 语句?

defget_string(no_of_times)1.upto(no_of_times)dostring_input=gets.chompcount_holes(string_input)endenddefcount_holes(word)count=0word.each_chardo|char|ifchar=="A"||char=="D"||char=="O"||char=="P"||char=="Q"||char=="R"count+=1elsifchar=="B"count+=2endend$arr_of_holes大家好。我不喜欢在遍历每个字符时if语句中的长条件。所以我想问

ruby-on-rails - ruby - 重构 if else 语句

我已经尝试阅读一些关于重构的教程,但我正在为条件判断而苦苦挣扎。我不想使用三元运算符,但也许这应该在方法中提取?还是有使用map的聪明方法?detail.stated=ifvalue[:stated].blank?nilelsifvalue[:stated]=="Incomplete"nilelsifvalue[:is_ratio]=="true"value[:stated]=="true"elseapply_currency_increment_for_save(value[:stated])end 最佳答案 如果将此逻辑移动到一

ruby-on-rails - rails if 数组中的对象

我需要检查,如果对于@line_items中的每个项目,它是否在不同的数组中说@quote_itemsController:defindex@line_items=LineItem.all@quote_items=QuoteItem.allend查看:line_iteminquoteitem!line_itemNOTinquoteitem!...有没有简单的方法来做到这一点?include?似乎没有按照我想要的方式工作。似乎总是对我产生错误。 最佳答案 你是对的,它总是返回false,因为你正在尝试检查@quote_items数组是

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-on-rails - Rails 4 : Check if today is sunday, 每月 15 日或最后一天

sidekiq工作人员在电子邮件中向客户发送PDF附件。工作人员每天检查是否是星期日然后发送周报,如果今天是每月的15日则发送双月报,如果是最后一天则发送月报。条件看起来像这样:ifsunday?#sendweeklyelsif15thofmonth#sendBi-monthlyelsiflast_day_of_month#sendMonthlyend如何判断是星期日、15日还是最后一天? 最佳答案 Rails有许多用于此类日期计算的有趣方法:today=Date.todayiftoday.sunday?#sendweeklyels

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