原文是说几个蠢笨的ruby技巧
原文地址:http://robots.thoughtbot.com/
代码块的序列调用
def touch_down
yield [3, 7]
puts "touchdown!"
end
touch_down do |(first_down, second_down)|
puts "#{first_down} yards on the run"
puts "#{second_down} yards passed"
end
=> "3 yards on the run"
=> "7 yards passed"
=> "touchdown!"
主要是说array在block中的使用
从array中取出元素
>> args = [1, 2, 3]
>> first, rest = args
>> first
=> 1
>> rest
=> [2, 3]
之前只是清楚split序列的用法,没有注意到实际上,我们可以方便的得到剩余的序列。
Hash#fetch
>> items = { :apples => 2, :oranges => 3 }
=> items = {:apples=>2, :oranges=>3}
>> items.fetch(:apples)
=> 2
>> items.fetch(:bananas) { |key| "We don't carry #{key}!"}
=> We don't carry bananas!
在散列的使用的时候,fetch可能会比检查是否存在值要方便一些。
创建代码段的散列
>> smash = Hash.new { |hash, key| hash[key] = "a #{key} just got SMASHED!" }
=> {}
>> smash[:plum] = "cannot smash."
=> {:plum=>"cannot smash."}
>> smash[:watermelon]
=> {:plum=>"cannot smash.", :watermelon=>"a watermelon just got SMASHED!"}
将代码段用于生产散列可以方便的保持一些未定义的初始值,特别是在斐波纳契计算中很适合(我没有看出来怎么用)
Array#sort_by
>> cars = %w[beetle volt camry]
=> ["beetle", "volt", "camry"]
>> cars.sort_by { |car| car.size }
=> ["volt", "camry", "beetle"]
序列的sort_by方法用来对代码段的返回值排序,就如同对于Symbol#to_proc进行map或者sort
String#present?
>> "brain".present?
=> true
>> "".present?
=> false
Rails的开发者可能对于blank?比较熟悉,然而对于present呢?实际上判断返回值是否正确这也是很好用的方法。
这里我确实想起来,对于find(:all)和find(:first)是否有返回值的判断的不同。还有一个
-
- .exists?
- .empty?
- .blank?
- .nil?
比较多见到吧
分享到:
相关推荐
本文将详细介绍几个常用的Ruby小技巧,帮助开发者更好地理解和运用Ruby。 #### 1. 代码块的序列调用 代码块是Ruby中一个非常重要的概念,它允许你将一段代码作为参数传递给方法,并在适当的时候执行。通过巧妙地...
在使用RDE时,有几个关键技巧可以提高开发效率。首先,充分利用代码提示和自动完成,减少手动输入,降低出错率。其次,善用调试工具,通过设置断点和观察变量状态,快速定位问题。再者,合理组织项目结构,利用RDE的...
- **IDE与编辑器**:推荐几款常用的Ruby开发环境,如Visual Studio Code、Sublime Text等,并介绍如何配置这些工具以提高开发效率。 - **在线资源**:列出一些官方文档、社区论坛、博客等资源,方便读者进一步学习和...
总结来说,通过这个Ruby Tic-Tac-Toe项目,我们可以学习到如何使用Ruby编写命令行应用,掌握面向对象编程技巧,理解游戏规则的逻辑实现,以及如何与用户进行有效交互。这是一个极好的练习,不仅可以加深对Ruby语言的...
在项目结构方面,模拟器可能包含以下几个主要部分: 1. **Deck模块**:负责创建并管理牌组,包括洗牌、发牌等操作。在Ruby中,这可以通过定义一个Deck类实现,其中包含对牌的表示(如用枚举或哈希存储花色和点数)...
为了进一步了解这个插件的详细功能和用法,我们需要解压文件并查看`rich-alert-dialogs-master`中的源代码、README文件和示例项目。通过阅读源码,我们可以学习到Dart语言在实现此类组件时的具体语法和技巧;而示例...
这里,`-1`是一个小技巧,用来获取月份的最后一天,而不需要知道具体是几号。这是因为`Date.new`会自动计算出给定月份的最后一天。 然后,我们使用`strftime`(String FormaTTing)方法来格式化日期。在这个例子中...
每个重构步骤都应遵循几个基本原则,比如保留软件的外部行为不变,确保重构不会引入新的bug等。 重构的过程一般包括以下几个步骤: 1. 识别需要重构的代码区域。 2. 设计并实施一个或多个小的、安全的代码变换。 3...
学习Ruby通常从以下几个方面入手: 1. **基础语法**:了解变量、常量、运算符、控制结构(如条件语句和循环)、函数、类和模块等基础知识。 2. **面向对象编程**:深入理解类和对象的概念,以及继承、封装和多态等...
在Ruby中,实现这个游戏需要以下几个关键步骤: 1. **初始化游戏**:首先,我们需要一个单词列表,可以使用数组来存储。例如,我们创建一个包含多个单词的数组`word_list`。然后,使用`rand`函数从数组中随机选取一...
本书以故事的形式,通过一个小女孩Ruby的冒险经历,向孩子们介绍编程的基本概念。书中融合了趣味故事和互动活动,让孩子们在享受阅读的同时,能够轻松学习编程思维,进而理解计算机逻辑。 书籍的核心理念是:编程是...
Selenium的核心组件包括以下几个部分: 1. **Selenium WebDriver**:这是Selenium的主要接口,允许测试脚本直接与浏览器进行交互。WebDriver支持各种浏览器,如Chrome、Firefox、Edge和IE等,通过提供一种标准化的...
3. **问题解决技巧**:每个小问题可能都有特定的解决路径,比如使用Ruby的内置方法,或者创建自定义函数。学习如何有效地调试代码、阅读错误信息以及优化解决方案也是这个过程的重要部分。 4. **版本控制**:由于...
在 "algo-practice-main" 文件中,我们可以期待找到以下几个方面的知识点: 1. **基础算法**:包括排序(如冒泡排序、快速排序、归并排序等)、搜索(如线性搜索、二分搜索等)、图算法(如深度优先搜索、广度优先...
在创建一个全栈克隆时,开发者会涉及到以下几个关键知识点: 1. **Ruby on Rails框架**:作为Ruby的主要Web开发框架,Rails提供了一种MVC(模型-视图-控制器)架构,简化了数据库交互、路由设置和模板渲染。开发者...