`
fei1985
  • 浏览: 35510 次
  • 性别: 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  
大家都习惯了一种写法,就成为了社会共同认定规律,而不是个性.

相关推荐

    lua-cjson decode中null改成nil

    `lua-cjson decode中null改成nil`这个话题,实际上是指在使用lua-cjson库进行JSON解码时,用户可能希望保留原始JSON数据中的`null`表示,而不是直接转换为`nil`。这可能是为了保持与JSON数据源的一致性,或者有特定...

    linked_list:Ruby中的链表实现

    在本篇文章中,我们将深入探讨如何在Ruby中实现链表,以及它的一些核心操作。 首先,我们来创建一个简单的链表节点类。这个类将包含两个属性:`data`用于存储数据,`next`用于指向下一个节点: ```ruby class Node...

    ios-清理模型中的nil.zip

    1. **字典与模型的映射**:在字典转模型的过程中,如果字典中的键与模型的属性不完全匹配,那么模型中那些字典中没有对应的属性会尝试赋值为`nil`。为了处理这种情况,我们需要确保模型类中所有属性都有合理的默认值...

    Ruby 基础语法 视频教程1

    - 在Ruby中,未初始化的变量默认为`nil`,这意味着它们没有值。 - 不同类型的变量有各自的命名空间,不会互相冲突。 3. 表达式(Expressions): - **Ruby中的每一个语句都是一个表达式**,可以产生一个值。例如...

    在Ruby中创建和使用哈希的教程

    在本教程中,我们将详细介绍如何在Ruby中创建和使用哈希,罗列各种方法和技巧,并解释哈希的特性。 ### 理解哈希的基本概念 在Ruby中,哈希类似于其他编程语言中的字典或关联数组。每个键值对中的键(key)是唯一...

    ruby 标准库

    在Ruby的标准库中,`Array`类提供了丰富的实例方法和类方法来处理数组。 ##### 1.1 Class methods **1.1.1 []** 用于创建一个新的数组。例如: ```ruby arr = [1, 2, 3] ``` **1.1.2 new** 创建一个新数组。...

    详解Ruby当中的算数运算

    本文将深入解析Ruby中的各种算数运算符,以及它们在实际编程中的应用。 首先,我们来看Ruby的算数运算符。Ruby提供了常见的加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)运算。比如,如果`a = 10`,`b = ...

    .一步一步学RUBY

    - **一切皆对象**:在Ruby中,从基本数据类型到布尔值,乃至`nil`,所有东西都被视为对象。方法调用参数也是可选的,这体现了Ruby的灵活性和面向对象的哲学。 - **语句块与迭代器**:Ruby支持简洁的循环语法,如`...

    Ruby从入门到精通pdf

    - 变量:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,它们都有特定的标识符前缀。 - 数据类型:包括字符串、整数、浮点数、布尔值、数组、哈希、符号和nil。 - 控制结构:如条件语句(if/else)、...

    Ruby-ClipboardRuby访问WindowsLinuxmacOSJava和Cygwin中剪贴板

    然后在Ruby代码中导入并使用`Clipboard`: ```ruby require 'clipboard' Clipboard.copy('Hello, World!') puts Clipboard.paste ``` 这段代码将“Hello, World!”复制到剪贴板,并打印出当前剪贴板的内容。 2. ...

    Ruby语言中文教程.rar

    在Ruby中,一切皆为对象,这使得编程更为直观。它的动态类型系统允许在运行时改变变量的类型,提高了编程的灵活性。 1. **基础语法** - 变量:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,它们分别以...

    ruby study

    ### Ruby中的正则表达式详解 #### 一、引言 在编程语言Ruby中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于模式匹配、搜索与替换字符串等功能。Ruby采用`//`作为正则表达式的边界标记,使得...

    ruby-2.5.8.tar.gz

    在Ruby-2.5.8版本中,我们可以探讨以下几个关键知识点: 1. **版本号的意义**:Ruby的版本号通常由主版本号、次版本号和修订号组成,如2.5.8。这里,2代表主版本,5代表次版本,8是修订号。主版本号变化通常意味着...

    二元树

    在Ruby中实现二元树,首先需要定义一个节点类,通常包含值、左子节点和右子节点这三个属性。例如: ```ruby class Node attr_accessor :value, :left, :right def initialize(value) @value = value @left = ...

    ruby的惯用法的使用

    number = 1 if number.nil? unless number number = 1 end ``` - **Ruby惯用法**: ```ruby number ||= 1 ``` #### 四、主程序检测 **3. 主程序检测** - **传统写法**: ```ruby if __FILE__ == $0 # ...

    Ruby-GraphQL的ActionPolicy集成

    ActionPolicy则是Ruby中的一个授权库,它为Rails应用提供了基于对象的策略模式实现,帮助开发者更好地管理权限控制。本文将深入探讨如何将ActionPolicy与GraphQL集成,以在你的Ruby应用中实现安全且灵活的权限管理。...

    Ruby的25个编程细节(技巧、实用代码段)

    在Ruby中,`try` 方法是一个非常有用的功能,它允许我们安全地访问对象的方法或属性,即使该对象为 `nil` 也不会抛出异常。相反,如果没有找到对象或者对象为 `nil`,`try` 会返回 `nil`。 **示例代码:** ```ruby ...

Global site tag (gtag.js) - Google Analytics