【问题标题】:undefined method `join' for nil:NilClass (NoMethodError) when no array is empty while using reject当使用拒绝时没有数组为空时,nil:NilClass (NoMethodError) 的未定义方法“加入”
【发布时间】:2023-04-06 06:48:01
【问题描述】:

使用 Ruby 1.9。我有以下内容:

add1 = [record['a'], record['b'], record['c']]
full_add = add1.reject!(&:empty?).join(", ")

# scenario 1
record['a'] = 'Good'
record['b'] = ''
record['c'] = 'Fine'
# >> Good, Fine

# scenario 2
record['a'] = 'Good'
record['b'] = 'Boy'
record['c'] = 'Fine'
# >> undefined method `join' for nil:NilClass (NoMethodError)

当我检查场景 2 的 full_add 时,它返回错误,因为没有数组为空。我应该如何解决这个问题?谢谢。

【问题讨论】:

  • reject! 返回 nil 如果没有被拒绝,请改用 reject(不带 !)。

标签: ruby


【解决方案1】:

你不能在一行中做到这一点:

add1 = [record['a'], record['b'], record['c']]
add1.reject!(&:empty?) if add1.include? ""
full_add = add1.join(", ")

注意带有!后缀的方法,这种方法会改变对象本身,并且不能使用它们的返回值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2013-11-14
    • 2013-01-14
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多