【转】ruby中nil?, empty? and blank?的选择

In Ruby, you check with nil? if an object is nil:article = nil
article.nil?  # => true

empty? checks if an element - like a string or an array f.e. - is empty:

# Array
[].empty?   #=> true
# String
"".empty?   #=> true

Rails adds the method blank? to the Object class:

An object is blank if it‘s false, empty, or a whitespace string. For example, "", " ", nil, [], and {} are blank.

This simplifies

if !address.nil? && !address.empty?

to

if !address.blank?

.nil?

- It is Ruby method- It can be used on any object and is true if the object is nil.- "Only the object nil responds true to nil?" - RailsAPI

nil.nil? = trueanthing_else.nil? = falsea = nila.nil? = true“”.nil = false

.empty?

- It is Ruby method- can be used on strings, arrays and hashes and returns true if:
  • String length == 0
  • Array length == 0
  • Hash length == 0

- Running .empty? on something that is nil will throw a NoMethodError

"".empty = true" ".empty? = false

.blank?

- It is Rails method- operate on any object as well as work like .empty? on strings, arrays and hashes.

nil.blank? = true [].blank? = true {}.blank? = true "".blank? = true 5.blank? == false

- It also evaluates true on strings which are non-empty but contain only whitespace:

"  ".blank? == true"  ".empty? == false

Quick tip: !obj.blank? == obj.present?

activesupport/lib/active_support/core_ext/object/blank.rb, line 17 # (Ruby 1.9) 

def present?  !blank?end
时间: 2024-11-11 15:37:03

【转】ruby中nil?, empty? and blank?的选择的相关文章

ruby中nil?, empty? and blank?

In Ruby, you check with nil? if an object is nil: article = nil article.nil? # => true empty? checks if an element - like a string or an array f.e. - is empty: # Array [].empty? #=> true # String "".empty? #=> true Rails adds the method

ruby : nil?, empty? and blank?的选择

article = nil article.nil? # => true empty? checks if an element - like a string or an array f.e. - is empty: # Array [].empty? #=> true # String "".empty? #=> true Rails adds the method blank? to the Object class: An object is blank if

ruby nil? empty? blank? 的区别

ruby nil? empty? blank? 一句话区别: nil?与empty? 除了对象用nil?其他用empty?判断 ,blank?的用法几乎是前两者的结合体 nil?用于对象 object sky = nil sky.nil? # => true其他的对象的都为 object.nil? 都为false 如数据库的一个属性为空,则 属性.nil? # => true empty? 用于string 和 array 还有hash # Array [].empty? #=> tru

Rails :.nil? , .empty?, .blank? .present? 的区别

.nil? , .empty?, .blank? .present? 的区别 首先这三个都是判空的. 而 .nil? 和 .empty? 是ruby的方法. .blank? 是rails的方法 .nil?       判断对象是否存在(nil).不存在的对象都是nil的 .empty?  对象已经存在,判断是否为空字段,比如一个字符串是否为空串,或者一个数组中是否有值.有点像判断长度是否为零,呵呵 .blank?   相当于同时满足 .nil? 和 .empty? .railsAPI中的解释是如

学习中:Ruby中的辅助方法和基础内容回顾补充

一. Ruby内置的辅助方法 1.打开文件:app/views/layouts/application.html.erb(演示应用的网站布局) 来咱把注意力放在圈起来的那一行: 这行代码使用 Rails 内置的 stylesheet_link_tag 方法, 在所有媒介类型中引入 application.css .对有经验的 Rails 开发者来说, 这行代码看起来很简单, 但是其中至少有四个 Ruby 知识点可能会让你困惑: 内置的 Rails 方法, 调用方法时不用括号, 符号(Symbol

在 Ruby 中执行 Shell 命令的 6 种方法

我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb >> exec 'echo "hello $HOSTNAME"' hello codefun $ 注意 exec 利用 echo 命令替换了 irb 进程,然后退出.因为 Ruby 实际上结束了该方法,所以只能有限使用.该方法的缺点是,你无法从 Ruby 脚本中知道命令是执行成功

理解Ruby中的作用域

作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够,但在你看看完我的这篇文章后,相信你不会再担心会遇到这些头疼的问题. 什么是作用域? 当谈论到作用域的时候,应该马上想到变量和可见性这两个词,变量和可见性是作用域的主要内容,没错,作用域就是关于在代码的什么地方什么变量是可见的,当你充分了解了作用域后,给你一段代码,你可以轻易知道此时什么变量是可见的,

关于ruby中的空指针保护(||=)

平时我们在写代码,构造嵌套数据或者给某个变量初始化时会用到下面这种形式: a ||= []  ; a = b || c ; a = a || [] 这种形式可以保证,在这些变量要被访问的时候才进行初始化,给我们构造数据带来了极大的灵活性:而这就是ruby中的空指针保护的应用. 要理解空指针保护的工作方式,要从ruby真假值和||操作法两方面着手: 首先,在ruby中除了nil和false被作为false外,其它值就被认为是true 其次,表面上||操作符会在两个表达式中任何一个为true时返回t

Ruby中的require、load、autoload

  require.load.autoload是Kernel模块中定义的方法,由于Class类和Object类都混入了Kernel模块,所以无论self是对象还是类,都可以调用这些方法. 这三个方法都用来加载和执行其他文件,但是有细微的不同,本文将从参数.函数执行.返回值三个方面简要介绍下这三个函数. 1. require(name) -> true or false or raise LoadError http://ruby-doc.org/core-2.1.2/Kernel.html#me