stdin -> stdout

編集
#!/usr/bin/ruby
puts gets

getsは素直だが、putsは改行の取り扱いを上手くやってくれる。

演算

編集

Fixnum, Floatオブジェクトの*メソッドは乗算。

puts 5.*(5)     # 25
puts 5.0.*(5.0) # 25.0

Stringオブジェクトの*メソッドは反復。

puts '5'.*(5) # 55555

略記法として中置記法がある。

puts 5 * 5     # 25
puts 5.0 * 5.0 # 25.0
puts '5' * 5   # 55555

Math:: or Math.

編集

メソッドとプロパティは別。

puts Math::PI # 4 * Math.atan2(1, 1)
puts Math::E  # Math.exp(1)
puts +(1 + Math.sqrt(5)) / 2 # (1 + Math.sqrt(5)) / 2

括弧

編集

括弧は不要。

puts Math.sqrt 5

しかし、

puts +(1 + Math.sqrt 5) / 2

これは優先順位が不適当。

puts +(1 + (Math.sqrt 5)) / 2

こうしなければならない。

puts +(1 + Math.sqrt(5)) / 2

一般的にはこう書かれる。

puts((1 + Math.sqrt 5) / 2)

こちらの方がスマートであるとの意見もある。

puts 2.** 10 # 1024

優先順位が明らかならば、括弧は不要。

puts 'y' while 1

または

while 1
    puts 'y'
end

Perlではできなかったこと

編集

Perlでは夢見ることしかできなかったこれができる。

p 'y' if 1 while 1 if 1 while 1