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
分享到:
相关推荐
清理字典转模型后模型中的nil,属性多于字典,服务器返回为null等情况
lua-cjson lua的cjson库 decode略做修改 结果中null还原成nil
查询生成器 Ruby 中 Elasticsearch 的查询构建器。 用法 gem 'es-query-builder' builder = EsQueryBuilder .... # Fields allowed searching with match query. ... nil? # Empty query { size :
3. Ruby中"一切皆对象"的理念,数字、布尔值、类、nil等都是对象。 4. Ruby中"一切皆表达式"的设计,控制语句、方法定义等都会返回值。 5. Ruby中"一切皆方法调用",没有直接访问属性的方式,只有方法调用。 6. 变量...
在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...
用ruby发送邮件附件的时候,需要安装mailfactory的插件,但是执行安装命令后会报错:mime-type (>=1.13.1)。该压缩包包含了mailfactory-1.4.0和mime-types-1.15两个文件。
ruby 标准库29.8 display 将对象输出到out。其定义如下: class Object def display(out=$stdout) out.print to_s nil end end 返回nil。
fluent-logger-ruby, 用于Fluentd的结构化记录器( ruby ) 录音机 结构化事件记录器示例简单require 'fluent-logger'log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost',
创一个Symbolic Breakpoint断点, 命名为UIApplicationMain, 增加一个Action为Debugger Command, 值为expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/...
相信有不少朋友想知道,在 Objective-C 中 nil 和 Nil 以及 NULL 的区别。最重要的是,在面试中还有不少朋友常会被问到。现在小编在这里统一详细说明。
条件判断,在编程语言中都存在,而Ruby中的条件判断和Java中类似,当然还是存在些许差别 Ruby中条件判断的条件: 1) 可以使用 ==,<,>等比较运算来作为条件,比较运算可以返回true和false,这和java中的语法是...
在Swift语言中,"??" 是一个称为Nil Coalescing Operator(空合并运算符)的操作符。它提供了一种简洁的方式来处理可选值(Optional)的情况。 当使用"??" 操作符时,如果可选值存在(即不为nil),则返回可选值的...
ruby_parser 家 虫子 博士 描述: ruby_parser(RP)是用纯Ruby编写的Ruby解析器(利用racc,默认情况下使用C扩展名)。 它输出可以通过ruby2ruby gem进行操纵... nil ), s ( :return , s ( :lit , 0 ))) 已针对
之前有看过《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中的变量有几种形式,分别是局部变量、实例变量、类变量、全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: ...
ruby> $foo nil ruby> $foo = 5 5 ruby> $foo 5 应谨慎使用全局变量.由于在任何地方都可以被写因此他们相当危险.滥用全局变量会导致很难隔离臭虫;同时也视为程序的设计未经严格考虑.当你发现必须要使用全局...
安装将此行添加到应用程序的 Gemfile 中: gem 'mr_to_nil' 然后执行: $ bundle或者自己安装: $ gem install mr_to_nil用法 [ :random , :array ] . to_nil # nil31337 . to_nil # nil"Yet another shitty gem" . ...
该库在 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 ...
前言 接口: 接口类型 是由一组方法签名定义的集合。 接口类型的变量可以保存任何实现了这些方法的值。 类型通过实现一个接口的所有方法来...在一些语言中,这会触发一个空指针异常,但在 Go 中通常会写一些方法来优雅
从对象和数组中删除nil值。 将所有其他nil值转换为null。 例子 var noNil = require ( 'no-nil' ) ; var input = [ 1 , undefined ] ; console . log ( noNil ( input ) ) ; // [1]; ##执照 The MIT License ...