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
分享到:
相关推荐
`lua-cjson decode中null改成nil`这个话题,实际上是指在使用lua-cjson库进行JSON解码时,用户可能希望保留原始JSON数据中的`null`表示,而不是直接转换为`nil`。这可能是为了保持与JSON数据源的一致性,或者有特定...
在本篇文章中,我们将深入探讨如何在Ruby中实现链表,以及它的一些核心操作。 首先,我们来创建一个简单的链表节点类。这个类将包含两个属性:`data`用于存储数据,`next`用于指向下一个节点: ```ruby class Node...
1. **字典与模型的映射**:在字典转模型的过程中,如果字典中的键与模型的属性不完全匹配,那么模型中那些字典中没有对应的属性会尝试赋值为`nil`。为了处理这种情况,我们需要确保模型类中所有属性都有合理的默认值...
- 在Ruby中,未初始化的变量默认为`nil`,这意味着它们没有值。 - 不同类型的变量有各自的命名空间,不会互相冲突。 3. 表达式(Expressions): - **Ruby中的每一个语句都是一个表达式**,可以产生一个值。例如...
在本教程中,我们将详细介绍如何在Ruby中创建和使用哈希,罗列各种方法和技巧,并解释哈希的特性。 ### 理解哈希的基本概念 在Ruby中,哈希类似于其他编程语言中的字典或关联数组。每个键值对中的键(key)是唯一...
在Ruby的标准库中,`Array`类提供了丰富的实例方法和类方法来处理数组。 ##### 1.1 Class methods **1.1.1 []** 用于创建一个新的数组。例如: ```ruby arr = [1, 2, 3] ``` **1.1.2 new** 创建一个新数组。...
本文将深入解析Ruby中的各种算数运算符,以及它们在实际编程中的应用。 首先,我们来看Ruby的算数运算符。Ruby提供了常见的加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)运算。比如,如果`a = 10`,`b = ...
- **一切皆对象**:在Ruby中,从基本数据类型到布尔值,乃至`nil`,所有东西都被视为对象。方法调用参数也是可选的,这体现了Ruby的灵活性和面向对象的哲学。 - **语句块与迭代器**:Ruby支持简洁的循环语法,如`...
- 变量:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,它们都有特定的标识符前缀。 - 数据类型:包括字符串、整数、浮点数、布尔值、数组、哈希、符号和nil。 - 控制结构:如条件语句(if/else)、...
然后在Ruby代码中导入并使用`Clipboard`: ```ruby require 'clipboard' Clipboard.copy('Hello, World!') puts Clipboard.paste ``` 这段代码将“Hello, World!”复制到剪贴板,并打印出当前剪贴板的内容。 2. ...
在Ruby中,一切皆为对象,这使得编程更为直观。它的动态类型系统允许在运行时改变变量的类型,提高了编程的灵活性。 1. **基础语法** - 变量:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,它们分别以...
### Ruby中的正则表达式详解 #### 一、引言 在编程语言Ruby中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于模式匹配、搜索与替换字符串等功能。Ruby采用`//`作为正则表达式的边界标记,使得...
在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 = ...
number = 1 if number.nil? unless number number = 1 end ``` - **Ruby惯用法**: ```ruby number ||= 1 ``` #### 四、主程序检测 **3. 主程序检测** - **传统写法**: ```ruby if __FILE__ == $0 # ...
ActionPolicy则是Ruby中的一个授权库,它为Rails应用提供了基于对象的策略模式实现,帮助开发者更好地管理权限控制。本文将深入探讨如何将ActionPolicy与GraphQL集成,以在你的Ruby应用中实现安全且灵活的权限管理。...
在Ruby中,`try` 方法是一个非常有用的功能,它允许我们安全地访问对象的方法或属性,即使该对象为 `nil` 也不会抛出异常。相反,如果没有找到对象或者对象为 `nil`,`try` 会返回 `nil`。 **示例代码:** ```ruby ...