irb和rails控制台在[].blank?上显示不同的结果。

3

为什么irb和Rails控制台对[].blank?的结果不同?

以下是我的irb检查:

$ irb
2.1.0 :001 > a = []
 => [] 
2.1.0 :002 > a.blank?
NoMethodError: undefined method `blank?' for []:Array
    from (irb):2
    from /home/user/.rvm/rubies/ruby-2.1.0/bin/irb:11:in `<main>'

这是我的控制台检查:
$ rails c -e local
Loading local environment (Rails 4.1.5)
2.1.0 :001 > a = []
 => [] 
2.1.0 :002 > a.blank?
 => true 
2个回答

6
blank?方法是Rails添加的(不属于标准的Ruby语言)。来自Rails文档:http://api.rubyonrails.org/
# File activesupport/lib/active_support/core_ext/object/blank.rb, line 15
def blank?
  respond_to?(:empty?) ? !!empty? : !self
end

2

要求使用ActiveSupport扩展

Object#blank? 方法是Rails的ActiveSupport核心扩展之一。Rails默认包含了ActiveSupport。但是,这些扩展也可以独立于Rails作为一个gem安装。

您可以通过要求需要的ActiveSupport部分,在其他应用程序或交互式REPL会话中包含ActiveSupport的部分功能。例如,要混合使用 #blank? 方法支持:

require 'active_support'
require 'active_support/core_ext/object/blank'

[].blank?
# => true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接