`

几个Ruby用法的小技巧

阅读更多
原文是说几个蠢笨的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?


比较多见到吧
1
0
分享到:
评论
3 楼 netfork 2009-08-18  
 
2 楼 夜鸣猪 2009-08-17  
http://robots.thoughtbot.com/
1 楼 fireflyman 2009-08-17  
原文地址呢?

相关推荐

    几个Ruby小技巧分享

    本文将详细介绍几个常用的Ruby小技巧,帮助开发者更好地理解和运用Ruby。 #### 1. 代码块的序列调用 代码块是Ruby中一个非常重要的概念,它允许你将一段代码作为参数传递给方法,并在适当的时候执行。通过巧妙地...

    RDE(Ruby 编程IDE)

    在使用RDE时,有几个关键技巧可以提高开发效率。首先,充分利用代码提示和自动完成,减少手动输入,降低出错率。其次,善用调试工具,通过设置断点和观察变量状态,快速定位问题。再者,合理组织项目结构,利用RDE的...

    Sams - Teach Yourself Ruby in 21 Days.pdf

    - **IDE与编辑器**:推荐几款常用的Ruby开发环境,如Visual Studio Code、Sublime Text等,并介绍如何配置这些工具以提高开发效率。 - **在线资源**:列出一些官方文档、社区论坛、博客等资源,方便读者进一步学习和...

    ruby-tictactoe:Ruby中的Tic-Tac-Toe控制台

    总结来说,通过这个Ruby Tic-Tac-Toe项目,我们可以学习到如何使用Ruby编写命令行应用,掌握面向对象编程技巧,理解游戏规则的逻辑实现,以及如何与用户进行有效交互。这是一个极好的练习,不仅可以加深对Ruby语言的...

    Euchre-ruby:模拟器来测试一些严峻的策略。 加上Ruby练习

    在项目结构方面,模拟器可能包含以下几个主要部分: 1. **Deck模块**:负责创建并管理牌组,包括洗牌、发牌等操作。在Ruby中,这可以通过定义一个Deck类实现,其中包含对牌的表示(如用枚举或哈希存储花色和点数)...

    用于显示炫酷警报对话框的Flutter插件。_Dart_Ruby_.zip

    为了进一步了解这个插件的详细功能和用法,我们需要解压文件并查看`rich-alert-dialogs-master`中的源代码、README文件和示例项目。通过阅读源码,我们可以学习到Dart语言在实现此类组件时的具体语法和技巧;而示例...

    Ruby 取得指定月日期数的方法

    这里,`-1`是一个小技巧,用来获取月份的最后一天,而不需要知道具体是几号。这是因为`Date.new`会自动计算出给定月份的最后一天。 然后,我们使用`strftime`(String FormaTTing)方法来格式化日期。在这个例子中...

    重构_改善既有代码的设计

    每个重构步骤都应遵循几个基本原则,比如保留软件的外部行为不变,确保重构不会引入新的bug等。 重构的过程一般包括以下几个步骤: 1. 识别需要重构的代码区域。 2. 设计并实施一个或多个小的、安全的代码变换。 3...

    学习

    学习Ruby通常从以下几个方面入手: 1. **基础语法**:了解变量、常量、运算符、控制结构(如条件语句和循环)、函数、类和模块等基础知识。 2. **面向对象编程**:深入理解类和对象的概念,以及继承、封装和多态等...

    Word_Guess_Game

    在Ruby中,实现这个游戏需要以下几个关键步骤: 1. **初始化游戏**:首先,我们需要一个单词列表,可以使用数组来存储。例如,我们创建一个包含多个单词的数组`word_list`。然后,使用`rand`函数从数组中随机选取一...

    HelloRuby_KickStarter_lores

    本书以故事的形式,通过一个小女孩Ruby的冒险经历,向孩子们介绍编程的基本概念。书中融合了趣味故事和互动活动,让孩子们在享受阅读的同时,能够轻松学习编程思维,进而理解计算机逻辑。 书籍的核心理念是:编程是...

    selenium

    Selenium的核心组件包括以下几个部分: 1. **Selenium WebDriver**:这是Selenium的主要接口,允许测试脚本直接与浏览器进行交互。WebDriver支持各种浏览器,如Chrome、Firefox、Edge和IE等,通过提供一种标准化的...

    five-small-problems:实践问题

    3. **问题解决技巧**:每个小问题可能都有特定的解决路径,比如使用Ruby的内置方法,或者创建自定义函数。学习如何有效地调试代码、阅读错误信息以及优化解决方案也是这个过程的重要部分。 4. **版本控制**:由于...

    algo-practice

    在 "algo-practice-main" 文件中,我们可以期待找到以下几个方面的知识点: 1. **基础算法**:包括排序(如冒泡排序、快速排序、归并排序等)、搜索(如线性搜索、二分搜索等)、图算法(如深度优先搜索、广度优先...

    fsp:我的全栈克隆的回购

    在创建一个全栈克隆时,开发者会涉及到以下几个关键知识点: 1. **Ruby on Rails框架**:作为Ruby的主要Web开发框架,Rails提供了一种MVC(模型-视图-控制器)架构,简化了数据库交互、路由设置和模板渲染。开发者...

Global site tag (gtag.js) - Google Analytics