【问题标题】:Why does .each { |rule| return false if !user.match(rule).nil? } not work in Rails C?为什么 .each { |rule|如果 !user.match(rule).nil 则返回 false?不能在 Rails C 中工作?
【发布时间】:2013-01-07 15:56:55
【问题描述】:

我正在使用 rails 控制台来调试问题。 Rails 控制台中的 Rails 服务器错误有什么用,我不知道为什么。

我的代码:

email = "team@mysite.com"
user_rules = [/\+/, /\-/, /all/, /updates/, /team/]
user, domain = email.downcase.split('@')
user_rules.each   { |rule| return false if !user.match(rule).nil?   }

最后一行错误:

1.9.3-p125 :016 > user_rules.each { |rule| return false if !user.match(rule).nil?}
LocalJumpError: unexpected return
    from (irb):16:in `block in irb_binding'
    from (irb):16:in `each'
    from (irb):16

有什么想法吗?

【问题讨论】:

  • 这基本上是stackoverflow.com/questions/2325471/… 的复制品。简短的回答是你不想从这样的 lambda 中返回,因为它试图从封闭函数返回。
  • @JimStewart 感谢您指出这一点。会是建议的更新吗?在下面回答,我会将其标记为正确。谢谢
  • 澄清一下,代码并没有明显的错误,但可能更清楚地写成return if user_rules.any? { |rule| !user.match(rule).nil? }
  • 或者只是return if user_rules.any? {|rule| user.match(rule) }

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

你在

中使用了return false

user_rules.each { |rule| return false if !user.match(rule) }

但是如果没有在函数/方法中使用,lambda 不支持返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2022-01-27
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多