草庐IT

if-cases

全部标签

ruby - 基本 ruby 数组代码 : Testing if an array has a specific integer

我正在尝试测试数组中是否包含特定整数。现在我正在使用这个测试;defadmin?current_user.role_ids==[1,2]||current_user.role_ids==[2]||current_user.role_ids==[1,2,5]end代码有效,但我更愿意只测试整数“2”,而不是明确写出包含“2”的所有可能的数字组合。如果您有任何ruby建议,我将不胜感激。这是我在飞行中所能想象到的最好的结果。谢谢! 最佳答案 您是否在寻找Array#include??current_user.role_ids.inclu

Ruby 删除 Case 语句中的隐式中断? (如何制作像 Switch 一样的外壳)

x='bob'casexwhen"bob"puts'itstopshere'when'bob'puts'butiwantittostophere'end有没有办法让case语句表现得像vanillaswitch?这样它会在爆发前循环遍历所有“时间”?我很惊讶ruby​​的行为几乎与elsif相同。 最佳答案 迈克尔,虽然您的示例有点误导(“bob”同时匹配“bob”和“bob”,因此第一种情况总是匹配),但您可以像下面的if_test方法一样使用简单的if:defcase_test(x)putscasewhenx>3"ct:#{x}

ruby - 解析与操作的可变范围和顺序 : Assignment in an "if"

我的理解是,行尾的if语句在行首的代码之前求值:'nevershown'if(false)并且可以在if语句中赋值。'shown'if(value='daveisking')value#=>"daveisking"并且,当一个不存在的变量被赋值时,它被创建。没有必要预先存在。这是真的吗?如果所有这些假设都是正确的,为什么会失败?error_arrayundefinedlocalvariableormethod`error'for数组push前赋值错误对吧?我想了解何时评估事物。这个确实有效:if(error=import_value(value))error_array现在我真的很困惑

ruby - || 的多个 case/when 条件

这个问题在这里已经有了答案:Casestatementwithmultiplevaluesineach'when'block(6个答案)关闭6年前。我一直在测试这段代码,但它并没有像我预期的那样工作。有人可以对此有所了解吗?language={JS:"Websites",Python:"Science",Ruby:"Webapps"}puts"Whatlanguagewouldyouliketoknow?"choice=gets.chompcasechoicewhen"js"||"JS"puts"Websites!"when"Python"||"python"puts"Science!

ruby - 我怎样才能使这个庞大的 Ruby if/elsif 语句更紧凑、更简洁?

下面的if/elsif语句显然是一个庞然大物。它的目的是根据用户是否填写了某些数据来更改某些文本的措辞。我觉得必须有更好的方法来做到这一点,而无需占用30多行代码,但我只是不确定如何,因为我正在尝试根据可用数据非常显着地自定义文本。if!birthdate.blank?&&!location.blank?&&!joined.blank?&&!death.blank?"#{name}wasbornon#{birthdate.strftime("%A,%B%e,%Y")}in#{location}.#{sex}passedawayon#{death.strftime("%B%e,%Y")}

ruby-on-rails - if/then/else/RETURN/end 的声明式 ruby​​ 编程替代?

我的Controller中到处都是:ifnotsession[:admin]flash[:notice]="Youdon'thavetherightstodo#{:action}."redirect_to:action=>:indexreturnend及其sibling:ifnotsession[:user]andnotsession[:admin]flash[:notice]="Youdon'thavetherightstodo#{:action}."redirect_to:action=>:indexreturnend当我想在一个方法中使用它时,我想将这一切减少到一个声明行:def

ruby-on-rails - Ruby 简写 if else 条件

是否有更简单的方法来编写此ruby​​代码:if@canonical_url@canonical_urlelserequest.original_urlend 最佳答案 这种模式就是or-operator的用途。@canonical_url||request.original_url或者,在第一个分支不只是测试结果的情况下,条件运算符也可以工作:some_condition?@canonical_url:request.original_url 关于ruby-on-rails-Ruby简

ruby - 如果 IF 条件变为真,如何跳过迭代并转到 do .. end 的第一行?

我写了下面的代码:require'net/http'require'uri'require'IPAddr'require'timeout'require'Resolv'require'open-uri'#puts"OriginIP:\n\n"#originip=gets()(IPAddr.new("209.85.175.120")..IPAddr.new("209.85.175.150")).eachdo|address|uri=URI("http://#{address.to_s}")puts"#{uri}"http=Net::HTTP.new(uri.host,uri.port)p

ruby - 用代理对象愚弄 Ruby 的 case 运算符 ===

我正在尝试制作一个代理对象,它将几乎所有方法调用都转移到一个子对象,本质上是委托(delegate)人模式。在大多数情况下,我只是使用BasicObject并将每次使用method_missing的调用传递给子对象。到目前为止,还不错。诀窍是尽我所能,我无法欺骗Ruby的case运算符,所以我不能这样做:x=Proxy.new(15)Fixnum===x#=>false,nomatterwhatIdo这当然会使任何casex操作失败,这意味着无法将代理安全地移交给其他库。我这辈子都搞不懂===在用什么。该代理适用于我所知道的所有基于类的内省(introspection),这些内省(in

ruby - if 语句中的局部变量

我想知道,为什么a可见?iftrueputs'true'elseputs'false'a=123endputsa#noerror#or#my_hash={key:a}#putsmy_hash#:key=>nil但这会导致错误,即使会显示“true”iftrueputs'true'elseputs'false'a=123endputsa2#boooooom 最佳答案 如果没有为对象定义方法a=,则在if中引用a具有将其声明为变量的效果。由于Ruby不要求使用与引用变量或分配给变量相同的语法来调用方法,因此它需要对相关标记的性质进行评估