登録会員限定記事 現在はどなたでも閲覧可能です

 もちろん単なるうっかりミスだが、「こんな優秀な人たちでもコロンを付け忘れることがあるのか」と、失礼ながら親近感を持ってしまった。ちなみに、そのチュートリアルの記述は現在はちゃんと修正されている。

 コロンは、恐らくPythonに対応した開発環境であれば、自動的に補完してくれるはずだ。コロンを問題にしていること自体、私がきちんとした開発環境を構築できていないということでもある。この点は反省すべきだと思う。

値を返すのに必要なもの

 私が2番目にはまった点は少し特殊である。状況を順番に説明していこう。

 前回も書いたが、個人的にはSchemeという言語でプログラムを書くことが多い。Schemeでは繰り返し処理を「再帰」という方法で実現するのが一般的だ。再帰では、関数定義の中から自分自身を呼び出す。例えば、1からnまでの数を掛け合わせる階乗のプログラムを再帰で書くと次のようになる。

(define (factorial n)
  (if (= n 1)
    1
    (* n (factorial (- n 1)))))

(display (factorial 5))

 与えられたnの値を1ずつ減らしながら掛けていくプログラムになっている。nが1になった時点で繰り返しが終わり、ばねが巻き戻されるように最終的な値が計算される。このコードでは5の階乗である120が表示される。

 これをRubyで書き直してみよう。

def factorial(n)
  if n == 1 then
    1
  else
    n * factorial(n-1)
  end
end

p factorial(5)

 ほぼ同じ形で書けているのが分かる。実行すると、Schemeと同様に120が表示される。