`
woody_420420
  • 浏览: 42074 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby中&&操作符的妙用(旁门左道)

阅读更多

  几乎所有的现代编程语言都提供了&&操作符,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...

分享到:
评论
1 楼 liusong1111 2008-08-22  
simulate if/elsif or case/when, javascript(jQuery) code:
status = isTimeout == "timeout" && "timeout" ||
	!jQuery.httpSuccess( xml ) && "error" ||
	s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
	"success";

相关推荐

    ruby1.8.7 & rails2.3.8

    总结起来,这个压缩包提供了一个便捷的方式来搭建使用Ruby 1.8.7和Rails 2.3.8的开发环境,包含了运行Rails应用程序所需的基本组件,特别是SQLite数据库的支持,对于那些需要在旧环境中工作的开发者来说非常有用。...

    [Ruby] Ruby 1.9 & 2.0 编程 (英文版)

    [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 , ...

    ruby&&Rails;书籍大集合

    Effective Ruby:改善Ruby程序的48条建议.pdf 、metaprogramming、Ruby元编程、Head First Rails 、Rails 指南、Ruby Best Practices、Ruby on Rails教程、ruby基础教程(中文第四版)、The RSpec Book

    Programming Ruby 1.9 & 2.0 The Pragmatic Programmers’ Guide 4th Edition

    - 书籍中包含了使用Ruby的教程和深入Ruby语言内部结构的详细描述。 - 书籍提供了Ruby的安装和运行方法,适合已经具备基本面向对象编程知识的读者。 本书的出版标志着Ruby语言20周年,作者自豪地涵盖了Ruby语言的...

    ruby RDT&RadRails(Eclipse下的插件)

    Ruby RDT(Ruby Development Tools)和RadRails是两个在Eclipse集成开发环境中用于支持Ruby on Rails(简称ROR)开发的插件。这两个工具极大地提升了Ruby程序员在Eclipse中的工作效率,提供了丰富的特性来帮助开发者...

    Ruby语言教程&案例&相关项目

    Ruby语言教程&案例&相关项目

    Ruby中对一元操作符重载实例

    今天我们要探讨一下Ruby中的一元操作符重载。 一元操作符有:+ – * ! & 等,为了避免与数值的 + – 混淆,重载一元操作符,要在后面加上一个 @ 操作符。 1. 一个简单的一元操作符重载例子:-@ 操作符 我们以String...

    Ruby语言教程&案例&相关项目资源

    或者是数据处理任务,让你学习如何使用Ruby操作文件系统和处理CSV数据。 “学习使用.pdf”文件可能是一个详细的指南,指导初学者如何逐步学习Ruby,包括推荐的学习路径、学习资源、常见问题解答,甚至可能包含一些...

    Ruby语言教程&案例&相关项目.zip

    Ruby语言教程&案例&相关项目

    ruby中英文api

    在Ruby中,API主要体现在类、方法、模块和库的形式上,它们提供了丰富的功能供开发者使用。Ruby的官方API文档详细记录了每种内置类型、类、模块、方法以及它们的使用方式。"ruby中英文api"资料集可能包含了对这些...

    Ruby语言教程&案例&相关项目资源.docx

    2. **GitHub上的Ruby项目**:通过浏览GitHub上的项目,可以学习实际应用开发中的Ruby代码。 #### 相关项目资源 1. **RubyGems**:Ruby社区的包管理器,提供大量的库和工具。 2. **Awesome Ruby**:GitHub项目,...

    Ruby 语言教程 & 案例 & 相关项目资源

    - **macOS** 用户可以使用 Homebrew 包管理器来安装 Ruby: ```bash brew install ruby ``` - **Ubuntu** 用户可以使用系统自带的包管理器进行安装: ```bash sudo apt-get update sudo apt-get install ruby...

    Ruby语言教程&案例&相关项目资源.zip

    产品说明.zip可能包含了一些实际项目的产品说明或案例分析,这些案例可以帮助学习者理解如何在真实环境中应用Ruby,可能涵盖: 1. **Web开发**:Ruby最著名的框架是Ruby on Rails,它简化了Web应用的开发。案例可能...

    Ruby语言教程&案例&相关项目资源分享.docx

    ### Ruby语言教程&案例&相关项目资源分享 #### Ruby语言简介 Ruby是一种动态类型的...通过以上资源的系统学习,不仅可以掌握Ruby语言本身,还能深入了解Ruby在实际开发中的应用,为进一步的职业发展奠定坚实的基础。

    ruby语言帮助文档(简体中文)

    方法调用可以用点操作符(`.`)或者下划线操作符(`_`),并且支持块(block)和 Proc 对象,这对于迭代和回调非常有用。 4. **控制结构**:Ruby有各种控制结构,包括条件语句(if/else/unless)、循环(for、while、...

Global site tag (gtag.js) - Google Analytics