別冊とっしーぱんち

IT技術系、Ruby関連、プログラミングお役立ち

他のプログラミング言語ではあまり見かけない?Rubyの特徴的な書き方やルール

今回は、Rubyでプログラムを書いていて、他の言語だとあんまり見かけない特徴的な書き方だなあと思っているところをご紹介します。

定数に代入できる

他のプログラミング言語では、「定数とは一度値を入れたら変えられないもの」として動作するのですが、Rubyの場合は代入することができます。実行するときに警告表示は出るのですが、代入自体は成功します。

# 定数を作る
NAME = 'とっしーぱんち'

# 代入できる
NAME = 'とっしー'


puts NAME
# =>とっしー

# 実行するとこんなwarningが出ます。
# =>warning: already initialized constant NAME
# =>warning: previous definition of NAME was here

if文が式になってる

Rubyの場合if文が式になっていて、たとえばこんなふうに書くことができます。

a = 1

# if文の条件式に当てはまる最後の結果がbに代入されます。
b = if a == 1
  'とっしー'
else
  'ぱんち'
end

# a == 1なので、とっしーと表示されます。
puts b
# =>とっしー

ブロックの最後にreturnつけなくても値が返却される

先ほど紹介したif文が式になるのと近いのですが、メソッドの最後にreturnと書かなくても最後に書いた結果が自動で返却されます。こんな感じです。

def hello
  # 他の言語ではreturn 'とっしー'と書く場合が多いです。
  'とっしー'
end

puts hello
# =>とっしー

メソッドを呼び出すときに()を省略できる。

さきほど、しれっと書いてしまいましたが、メソッドは()をつけなくても呼び出すことができます。

# 引数がない場合は()をつけなくてもよい
def hello
  # 他の言語ではreturn 'とっしー'と書く場合が多いです。
  'とっしー'
end

# hello()と書いても良いし、helloのままでも問題ないです。
puts hello
# =>とっしー

たびたび登場しているputsというのも実はメソッドで()を省略しているだけっぽいです。なので、puts(hello)と書いても同じ意味になります。