Ruby 2015 年 2 月 16 日

Ruby那些优美的地方-语法层面

我对优美的东西真实一点抵抗力都没有啊,其实学习 Ruby 看的第一本书是 “Ruby 元编程”, 一下子就陷入了 Ruby 的坑, “Ruby 元编程” 是一本把 Ruby 的与众不同的特性展示的最好的一本书,整本书一句废话都没有,无论是 Ruby 刚入门还 是 Ruby 老手,我都特别推荐这本书,在看这本书之后,你才发现你开始深入体会了 Ruby 让程序员变得快乐的真正意义。
我不敢说也不是 Ruby 老手,我只是单纯喜欢这门优美的语言,本文我想从语法的层面来展示 Ruby 那些优美的细节。当 然我更希望自己后续可以写一篇 “Ruby: 那些优美的的地方-设计层面”

循环

  • for

    几乎对于所有的编程语言而言,for 语句的存在都是为了遍历数组,而在 Ruby 中遍历数组的方式可以有

  for i in array
    code block
  end
或者
  array.each do |element|
    code block
  end
或者
  array.each_with_index do |element, index|
    code block
  end
或者
其实对于循环,Ruby 有非常漂亮的其他语法.
  • upto
  1.upto(10) do |i|
    code block
  end
  • downto
  10.downup(1) do |i|
    code block
  end
  • .. 运算符: 创建从开始到结束的范围
  (1..10).each do |i|
    code block
  end
  • … 运算符: 创建从开始到结束的范围, 但是不包含结束
  (1...10).each do |i|
    code block
  end

分支控制

  • if

    Ruby 的 if 语句和其他语言基本上没有区别,比较有意思的可以使用 short if,在很多场景下很方便.

  if expression
    code block
  end

或者
  if expression
    code block
  elsif expression
    code block
  end
Short if 如
  variable = (expression) ? ( expression-if-true ) : ( expression-if-false)
  • case

    case 语句非常有用,当对表达的结果有可预知的范围时,用 case 语句非常的方便.

  case expression
  when expression1
    code bloc
  when expression2
    code bloc
  else
    code bloc
  end
  • unless

    还有比较好玩的 unless 语句, 它和 if !expression 实际上是等价.

  unless expression
    code bloc
  end
  • while, until 也和其他语言如 Shell 是一样的.
  while expression
    code bloc
  end

  until expressino
    code bloc
  end