【问题标题】:ruby - using include method in a case statementruby - 在 case 语句中使用 include 方法
【发布时间】:2011-05-22 00:03:22
【问题描述】:

我正在使用这样的东西:

case referer
      when (referer.include? "some_string")
        redirect_link = edit_product_path
      when (referer.include? "some_other_string")
        redirect_link = other_product_path
end

不幸的是,即使字符串 some_string 存在于变量 referer 中,它也会返回 nil。

这是我在 Ruby 控制台中尝试过的:

ruby-1.8.7-p334 :006 > jasdeep = "RAILS"
ruby-1.8.7-p334 :026 > case jasdeep
ruby-1.8.7-p334 :027?>   when (jasdeep.include? "AI")
ruby-1.8.7-p334 :028?>   puts "Hello"
ruby-1.8.7-p334 :029?> end
=> nil

我们将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby switch-statement case


    【解决方案1】:

    试试这个

    jasdeep = "RAILS"
    case jasdeep
    when /IL/
      puts "Hello"
    end
    

    【讨论】:

    • 是否可以使用when boolean 中的变量来执行此操作?
    • @Nick 有可能:when /#{some_var}/ puts "variable" end
    • IL到底是什么?
    • @Unkas 它是作为 RegEx 测试字符串的一部分(/IL/ in jasdeep = "RAILS"
    【解决方案2】:
    jasdeep = "RAILS"
    
    case
      when jasdeep.include?("AI")
        puts "Hello"
    end
    

    【讨论】:

    • 感谢 Nash,但这并没有帮助。
    【解决方案3】:

    nil 是 puts 语句的返回值,而不是 .include?。尝试从控制台分别运行以下两条语句,观察返回值:

    jasdeep.include? "AI"
    
    puts "hello"
    

    【讨论】:

    • ruby-1.8.7-p334 :040 > puts "hello" hello => nil
    【解决方案4】:
    case true
    when referer.include? "some_string"
      redirect_link = edit_product_path
    when referer.include? "some_other_string"
      redirect_link = other_product_path
    end
    

    【讨论】:

    • 这会导致 syntax error 与 Ruby 1.9.3(以及我想象的更高版本)。
    猜你喜欢
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多