`
wangsuting
  • 浏览: 29618 次
社区版块
存档分类
最新评论

.nil? .empty? .blank?的区别

阅读更多
这三个都是判空的。而 .nil? 和 .empty? 是ruby的方法。 .blank? 是rails的方法

.nil?  判断对象是否存在(nil)。不存在的对象都是nil的

.empty? 对象已经存在,判断是否为空字段,比如一个字符串是否为空串,或者一个数组中是否有值。类似于判断length是否是0

.blank?   可以这样理解:.blank?=(.empty?||.nil?)。如果对象是:false, empty,  "", " ", nil, [], 和{}都算是blank。  

除了 false 本身之外,所有的 Ruby 对象中nil是唯一一个布尔值为“假”的。基本上所有其他的 Ruby 对象都是“真”的,包括 0
>> "".nil?
=> false
>> nil.nil?
=> true

>> "foo".nil?
=> false
>> "".nil?
=> false
>> nil.nil?
=> true


因为 Ruby 中的一切都是对象,那么 nil 也是对象,所以它也可以响应方法
>> nil.to_s
=> ""

nil 对象本身无法响应 empty? 方法,但是 nil.to_s 可以
>> nil.empty?
NoMethodError: You have a nil object when you didn\'t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
>> nil.to_s.empty?     
=> true
>> "      ".empty?
=> false


注意一点:empty?不能用于整数
分享到:
评论

相关推荐

    二元树

    node.right = remove_node(node.right, min_right.value) unless node.right.nil? return node.left if node.left.nil? return merge_nodes(node.left, node.right) if node.left.left.nil? && node.left.right....

    true_string:将字符串转换为布尔值

    真字符串 可以转换为真值、 true和false的字符串集合。 "true" . truthy? "false" ....nil . falsy? 如果接收者分别为真或假,这些方法将返回true 。 安装 将此行添加到应用程序的 Gemfile 中: gem

    Rails的邮件预览引擎MailsViewer.zip

    user_name: nil, password: nil, authentication: nil, enable_starttls_auto: true }, send_if: lambda { |mail| mail.destinations.select { |address| ["yedingding@gmail.com"].include?(address) }.any? ...

    EasyUIImagePickerController

    strongSelf.presentViewController(imagePickerController, animated: true, completion: nil) } }, Fail: { //SVProgressHUD.showErrorWithStatus("无法获取照片权限") }) 选取图片来自相机 注意使用[weak ...

    linked_list:Ruby中的链表实现

    @next = nil end end ``` 接下来,我们需要创建一个链表类,该类将包含一系列方法来管理链表。这些方法可能包括初始化链表、添加新节点、删除节点、检查链表是否为空以及遍历链表等。 ```ruby class LinkedList ...

    is_bullshit:叫废话

    is_bullshit叫废话。... 以下值为合格的总废话: [nil, [], {}, 0, false, 'undefined', 'false', '', '0', 'nil', 'null'] .legit? 和.seems_legit? .bullshit?的对立是.bullshit? nil.bullshit?

    binary_search_tree:用Ruby实现的二进制搜索树

    return Node.new(key, value) if node.nil? if key < node.key node.left = insert_node(node.left, key, value) else node.right = insert_node(node.right, key, value) end node end # 查找节点 def ...

    UITextField

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector...

    ios-地理编码.zip

    .first, error == nil { let coordinate = placemark.location!.coordinate print("经度: \(coordinate.longitude), 纬度: \(coordinate.latitude)") } else { print("地理编码失败: \(error?....

    es-query-builder:Ruby 中 Elasticsearch 的查询构建器

    查询生成器 Ruby 中 Elasticsearch 的查询构建器。 用法 gem 'es-query-builder' builder = EsQueryBuilder .... # Fields allowed searching with match query. query_fields : [ 'field... # Empty query { size :

    weak_attr_accessor:RubyMotion 的weak_attr_accessor

    #weak_attr_accessor 用于 ... @view_controller = nil else @view_controller = WeakRef . new ( obj ) end end end 安装 将此添加到您的Gemfile : gem 'weak_attr_accessor' 运行bundle install 执照

    in_business:用于检查给定的DateTime,Date或Time是否在预定义的开放时间范围内的gem

    在业务 处理业务开放时间非常困难,或者至少要为每个应用程序写很多工作。... # => nil (since we've not set any hours yet!) # We want to be open 9am til 6pm on a Monday InBusiness . hours . monday

    AutomaticCoder.zip

    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSDictionary *json = [data objectFromJSONData]; //init object Person *person = [[Person alloc] ...

    ipcat-ruby:client9ipcat的Ruby端口

    否则nil 。 例如, range = IPCat . datacenter? ( '52.95.252.0' ) # => instance of IPCat::IPRange range . name # => 'Amazon AWS' IPCat . datacenter? ( '127.0.0.1' ) # => nil 执照 版权所有(c)2013 ...

    OptionalAPI:Swift Optional Monad 的可选扩展.​​.....是否使用它......它是可选的

    someOptional == nil ? True branch : False branch 新的: someOptional. isSome ? True branch : False branch someOptional. isNone ? True branch : False branch someOptional. isNotSome ? True branch : ...

    nil_or:执行除非 Nil

    gem 'nil_or' 然后执行: $ bundle 或者自己安装: $ gem install nil_or 用法 我什么时候需要它? 而不是写: date_of_birth = params [ :date_of_birth ] ? params [ :date_of_birth ] . to_date : nil ...

    ios 键盘通知实现对话框的功能

    使用`NSNotificationCenter`的`addObserver:selector:name:object:`方法,传入当前控制器的引用、一个处理键盘通知的方法选择器、键盘通知的名称以及nil(因为键盘通知的发送者是系统的,所以我们不需要特定的对象)...

    swift-ZMAddressBookiOS通讯录操作对通讯录进行添加删除修改查询等操作.

    guard let contact = contact, error == nil else { print("获取联系人失败:\(error?.localizedDescription ?? "未知错误")") return } contact.givenName = "王五" do { try store.save(contact, to: .main...

    swift-iOS开发中手机截图分享功能.类似新浪微博app

    let activityViewController = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil) // 防止在iPad上出现弹出框时,键盘被误触导致关闭 activityViewController....

    滚动视图自适应键盘出现和消失

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector...

Global site tag (gtag.js) - Google Analytics