几乎所有的现代编程语言都提供了&&操作符,ruby也不例外。我想每个人都知道&&的用法。但是在ruby中,利用&&可以实现一些“诡异”的用法,如下例子:
1. 基于这样一个事实:几乎ruby中的所有expression都有返回值(甚至if,case等等),例如:
a = 10 + 20 # => 30
some_bool = true # => true
利用这样的事实,怎么和&&一起“妙用”呢?现在假设有一个数组,比如[1,2,3,"woody",4,"woody"],我们要写一段程序,在遍历数组的时候,如果碰到元素"woody",则将其打印出来,但是只打印一次;如果是其他元素,则执行其他操作。通常,在其他语言中,我们会使用一个flag来完成,比如:
flag = false
arr = [1,2,3,"woody",4,5,"woody"]
for e in arr
if e == "woody" && !flag
p e
flag = true
end
end
在ruby中,我们可以利用上面提到的原理,如下编码:
flag = false
arr = [1,2,3,"woody",4,5,"woody"]
for e in arr
p e if e == "woody" && !flag && (flag = true)
end
if?flag=true?通常其他程序员看到这样的代码会坚信是错误的,C#在编译过程就会报错。但是,在ruby中,你确实可以使用这样的“九阴真经”。尽管,这可能不是一个好的编程习惯,但是,在一些情况下,这样做确实可以使你的ruby代码简洁很多。
(这里,Enumerable中的方法我们就先不考虑了。或许这个例子举得不是很好~)
2. 同样还是基于expression的返回值,考虑如下代码:
(1+2)&&(3+4) #=> 7
ruby会对&&左右的expression进行计算,至于返回值,当然如果左端操作不为nil或者false的话,就返回右端计算结果。这里,如果结合Array的构造函数,我们可以用如下代码,十分简洁的生成斐波那契数列:
x,y = 0,1
Array.new(10) {|i| [0,1].include?(i) ? 1 : (x,y = y,x+y)&&(x+y) }
#=>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
反正我是想了半天,没想到在C,C++或者C#中使用什么高级方法能写出更简洁的代码
3...
4...
分享到:
相关推荐
总结起来,这个压缩包提供了一个便捷的方式来搭建使用Ruby 1.8.7和Rails 2.3.8的开发环境,包含了运行Rails应用程序所需的基本组件,特别是SQLite数据库的支持,对于那些需要在旧环境中工作的开发者来说非常有用。...
[Pragmatic Bookshelf] Ruby 1.9 & 2.0 编程 (英文版) [Pragmatic Bookshelf] Programming Ruby 1.9 & 2.0 The Pragmatic Programmers' Guide 4th Edition (E-Book) ☆ 出版信息:☆ [作者信息] Dave Thomas , ...
Effective Ruby:改善Ruby程序的48条建议.pdf 、metaprogramming、Ruby元编程、Head First Rails 、Rails 指南、Ruby Best Practices、Ruby on Rails教程、ruby基础教程(中文第四版)、The RSpec Book
- 书籍中包含了使用Ruby的教程和深入Ruby语言内部结构的详细描述。 - 书籍提供了Ruby的安装和运行方法,适合已经具备基本面向对象编程知识的读者。 本书的出版标志着Ruby语言20周年,作者自豪地涵盖了Ruby语言的...
Ruby RDT(Ruby Development Tools)和RadRails是两个在Eclipse集成开发环境中用于支持Ruby on Rails(简称ROR)开发的插件。这两个工具极大地提升了Ruby程序员在Eclipse中的工作效率,提供了丰富的特性来帮助开发者...
Ruby语言教程&案例&相关项目
今天我们要探讨一下Ruby中的一元操作符重载。 一元操作符有:+ – * ! & 等,为了避免与数值的 + – 混淆,重载一元操作符,要在后面加上一个 @ 操作符。 1. 一个简单的一元操作符重载例子:-@ 操作符 我们以String...
或者是数据处理任务,让你学习如何使用Ruby操作文件系统和处理CSV数据。 “学习使用.pdf”文件可能是一个详细的指南,指导初学者如何逐步学习Ruby,包括推荐的学习路径、学习资源、常见问题解答,甚至可能包含一些...
Ruby语言教程&案例&相关项目
在Ruby中,API主要体现在类、方法、模块和库的形式上,它们提供了丰富的功能供开发者使用。Ruby的官方API文档详细记录了每种内置类型、类、模块、方法以及它们的使用方式。"ruby中英文api"资料集可能包含了对这些...
2. **GitHub上的Ruby项目**:通过浏览GitHub上的项目,可以学习实际应用开发中的Ruby代码。 #### 相关项目资源 1. **RubyGems**:Ruby社区的包管理器,提供大量的库和工具。 2. **Awesome Ruby**:GitHub项目,...
- **macOS** 用户可以使用 Homebrew 包管理器来安装 Ruby: ```bash brew install ruby ``` - **Ubuntu** 用户可以使用系统自带的包管理器进行安装: ```bash sudo apt-get update sudo apt-get install ruby...
产品说明.zip可能包含了一些实际项目的产品说明或案例分析,这些案例可以帮助学习者理解如何在真实环境中应用Ruby,可能涵盖: 1. **Web开发**:Ruby最著名的框架是Ruby on Rails,它简化了Web应用的开发。案例可能...
### Ruby语言教程&案例&相关项目资源分享 #### Ruby语言简介 Ruby是一种动态类型的...通过以上资源的系统学习,不仅可以掌握Ruby语言本身,还能深入了解Ruby在实际开发中的应用,为进一步的职业发展奠定坚实的基础。
方法调用可以用点操作符(`.`)或者下划线操作符(`_`),并且支持块(block)和 Proc 对象,这对于迭代和回调非常有用。 4. **控制结构**:Ruby有各种控制结构,包括条件语句(if/else/unless)、循环(for、while、...