`
hanqingwxf2008
  • 浏览: 51613 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

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

    博客分类:
  • ruby
阅读更多

首先这三个都是判空的。 而 .nil? 和 .empty? 是ruby的方法。 .blank? 是rails的方法

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

.empty?  对象已经存在,判断是否为空字段,比如一个字符串是否为空串,或者一个数组中是否有值。有点像判断长度是否为零,呵呵

.blank?   相当于同时满足 .nil? 和 .empty? 。railsAPI中的解释是如果对象是:false, empty, 空白字符. 比如说: "", " ", nil , [], 和{}都算是blank。   (object.blank? 相当于 object.nil?||object.empty?)

 

.present ? (The opposite of Rails blank? is present?)

 

下面是一些例子:

nil.nil?
=> true

false.nil?
=> false

1.nil?
=> false

0.nil?
=> false

"".nil?
=> false

[].nil?
=> false

"".empty?
=> true

"abc".empty?
=> false

[].empty?
=> true

[1, 2, 3].empty?
=> false

1.empty?
=> NoMethodError    #说明 empty? 方法不能用于整数

  p true.blank?       FALSE
    p false.blank?      TRUE
    p "true".blank?    FALSE
    p "".blank?          TRUE
    p "\n".blank?       TRUE
    p '\n'.blank?        FALSE
    p 'true'.blank?     FALSE
    p ''.blank?           TRUE
    p 1.blank?           FALSE
    p [].blank?          TRUE
    p [1].blank?        FALSE

分享到:
评论

相关推荐

    二元树

    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

    EasyUIImagePickerController

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

    linked_list:Ruby中的链表实现

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

    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? ...

    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 : ...

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

    present(activityViewController, animated: true, completion: 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...

    UIAlertTableView 里进行单选和多选的代码例子

    .present(alertController, animated: true, completion: nil) ``` 在上述代码中,`UIAlertTableView`类提供了一个构造函数,接受标题、消息、样式、数据数组以及一个闭包作为参数,该闭包会在用户完成选择时被调用...

    swift-使用与iOS8以后只是把系统的UIAlertController进行了封装

    .present(alertController, animated: true, completion: nil) } ``` 使用这个函数,只需要提供标题、消息和一组操作,就可以轻松地创建并展示一个警告对话框: ```swift show_alert(title: "警告", message: ...

Global site tag (gtag.js) - Google Analytics