`
fei1985
  • 浏览: 34384 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

ruby 中尽量少于nil?

阅读更多

ruby是灵活的,同样的效果花的代价却是不同的请看下面的例子:

 

require 'benchmark'

Benchmark.bm do|b|

  b.report("without .nil?") do
    cat = nil
    bat = 'vampire'
    2_000_000.times do
      unless bat        
        true if cat
      end
    end
  end
  
  
  b.report("with nil? ") do
    cat = nil
    bat = 'vampire'
    2_000_000.times do
      unless bat.nil?
        true unless cat.nil?        
      end
    end
  end

end

 在我的电脑上测试结果如下:

      user     system      total        real
without .nil?  0.390000   0.000000   0.390000 (  0.392000)
with nil?   1.014000   0.000000   1.014000 (  1.024000)

 

所以说我们在一些情况下用unless来代替nil?

do_something unless user
或者
unless user
  do_something
end
 

 

分享到:
评论
1 楼 lliiqiang 2014-09-24  
大家都习惯了一种写法,就成为了社会共同认定规律,而不是个性.

相关推荐

    ios-清理模型中的nil.zip

    清理字典转模型后模型中的nil,属性多于字典,服务器返回为null等情况

    lua-cjson decode中null改成nil

    lua-cjson lua的cjson库 decode略做修改 结果中null还原成nil

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

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

    Ruby菜鸟入门指南.md

    3. Ruby中"一切皆对象"的理念,数字、布尔值、类、nil等都是对象。 4. Ruby中"一切皆表达式"的设计,控制语句、方法定义等都会返回值。 5. Ruby中"一切皆方法调用",没有直接访问属性的方式,只有方法调用。 6. 变量...

    Ruby编程语言

    在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...

    ruby-mailfactory-mime_type

    用ruby发送邮件附件的时候,需要安装mailfactory的插件,但是执行安装命令后会报错:mime-type (>=1.13.1)。该压缩包包含了mailfactory-1.4.0和mime-types-1.15两个文件。

    ruby 标准库

    ruby 标准库29.8 display 将对象输出到out。其定义如下: class Object def display(out=$stdout) out.print to_s nil end end 返回nil。

    fluent-logger-ruby, 用于Fluentd的结构化记录器( ruby ).zip

    fluent-logger-ruby, 用于Fluentd的结构化记录器( ruby ) 录音机 结构化事件记录器示例简单require 'fluent-logger'log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost',

    Reveal 163

    创一个Symbolic Breakpoint断点, 命名为UIApplicationMain, 增加一个Action为Debugger Command, 值为expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/...

    总结IOS中nil、Nil、NULL和NSNull区别

    相信有不少朋友想知道,在 Objective-C 中 nil 和 Nil 以及 NULL 的区别。最重要的是,在面试中还有不少朋友常会被问到。现在小编在这里统一详细说明。

    Ruby简明教程之判断语句介绍

    条件判断,在编程语言中都存在,而Ruby中的条件判断和Java中类似,当然还是存在些许差别 Ruby中条件判断的条件: 1) 可以使用 ==,<,>等比较运算来作为条件,比较运算可以返回true和false,这和java中的语法是...

    聊聊swift语言中的"??"

    在Swift语言中,"??" 是一个称为Nil Coalescing Operator(空合并运算符)的操作符。它提供了一种简洁的方式来处理可选值(Optional)的情况。 当使用"??" 操作符时,如果可选值存在(即不为nil),则返回可选值的...

    ruby_parser:ruby_parser是用纯Ruby编写的Ruby解析器。 它输出可以通过ruby2ruby gem进行操纵并转换回ruby的s表达式

    ruby_parser 家 虫子 博士 描述: ruby_parser(RP)是用纯Ruby编写的Ruby解析器(利用racc,默认情况下使用C扩展名)。 它输出可以通过ruby2ruby gem进行操纵... nil ), s ( :return , s ( :lit , 0 ))) 已针对

    Ruby中使用设计模式中的简单工厂模式和工厂方法模式

    之前有看过《ruby设计模式》,不过渐渐的都忘记了。... def initialize(number_a = nil, number_b = nil) @number_a = number_a @number_b = number_b end def result 0 end end #加法类 class Operatio

    Ruby中的变量学习总结

    Ruby中的变量有几种形式,分别是局部变量、实例变量、类变量、全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: ...

    解析 ruby 全局变量

    ruby> $foo nil ruby> $foo = 5 5 ruby> $foo 5 应谨慎使用全局变量.由于在任何地方都可以被写因此他们相当危险.滥用全局变量会导致很难隔离臭虫;同时也视为程序的设计未经严格考虑.当你发现必须要使用全局...

    to_nil:to_nil 宝石

    安装将此行添加到应用程序的 Gemfile 中: gem 'mr_to_nil' 然后执行: $ bundle或者自己安装: $ gem install mr_to_nil用法 [ :random , :array ] . to_nil # nil31337 . to_nil # nil"Yet another shitty gem" . ...

    if:在 Ruby 中实现 if 而不使用关键字

    该库在 Ruby 1.8.7 及更高版本上进行了测试,但受益于 Ruby 1.9 的哈希和 lambda 文字语法。 "truthy" . if -> { "I'm true!" } , else : -> { "I'm false!" } # vs. "truthy" . if proc { "I'm true!" } , :else ...

    golang nil接口和空接口

    前言 接口: 接口类型 是由一组方法签名定义的集合。 接口类型的变量可以保存任何实现了这些方法的值。 类型通过实现一个接口的所有方法来...在一些语言中,这会触发一个空指针异常,但在 Go 中通常会写一些方法来优雅

    node-no-nil:从对象和数组中删除nil值。 将所有其他nil值转换为null

    从对象和数组中删除nil值。 将所有其他nil值转换为null。 例子 var noNil = require ( 'no-nil' ) ; var input = [ 1 , undefined ] ; console . log ( noNil ( input ) ) ; // [1]; ##执照 The MIT License ...

Global site tag (gtag.js) - Google Analytics