【问题标题】:Lambda returning different values [closed]Lambda返回不同的值[关闭]
【发布时间】:2013-12-16 10:18:07
【问题描述】:

我正在为以下代码苦苦挣扎:

  • 我想要一种方法来检查字符串是否有内容。
has_content  = -> (a) { a!=nil && a.strip != ''}

c = ' '

has_content.call(c)
=> false
c.has_content
=> true

为什么反应不同?显然我缺乏一些 Proc/lambdas 知识。

【问题讨论】:

  • c.has_content 应该抛出错误...你是如何得到true 的?
  • 顺便说一句。检查空内容的更惯用方法是!(a.nil? || a.empty?)

标签: ruby lambda proc


【解决方案1】:

我相信该代码中缺少导致此类行为的某些内容。

has_content 没有为 String 定义,所以除非你之前定义过,否则应该会报错

1.9.3p429 :002 > ''.has_content
NoMethodError: undefined method `has_content' for "":String
    from (irb):2
    from /Users/weppos/.rvm/rubies/ruby-1.9.3-p429/bin/irb:12:in `<main>'

附带说明,这是您的代码的替代版本

has_content = ->(a) { !a.to_s.strip.empty? }

这是一个例子

has_content.(nil)
# => false
has_content.('')
# => false
has_content.(' ')
# => false
has_content.('hello')
# => true

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多