[Ruby] Rubyの名前空間

by tanabe on May 13, 2006

JavaからRubyに移動して一番戸惑っているのが、「名前空間」いわゆるパッケージ。

Moduleで名前空間を生成できます。

RubyのModuleには役割が二つあって、一つが名前空間の生成、もう一つがMix-inのためのエンティティです。
深い名前空間を生成したければ、Moduleをネストする形で対応します。

ちなみにrequireするときには、ディレクトリ構成に従って対象を指定します。

個人的に、Rubyを始めた当初にincludeとrequireにはまってよくわからなくなっていたのを思いだしたので回答してみました。

requireは使用したいライブラリをファイルとして指定するからパスの指定(文字列としての指定)で、includeは名前空間の適用だからモジュール名の指定(定数の指定)、というのは今思えば当然なんだけど、なぜか当時は混乱していて、ちゃちなプラグラム一本動かすのに困りまくったのを覚えています。

  

エンジニアの欠点

by tanabe on May 12, 2006

エンジニアな人は選択肢を出すときに二つとも正しい選択肢を出すからいけないのだと、社会人を4年もやってようやく気付いたよ。

たいていバッファは見込んで、リスクを避けようとはするけど基本的にベクトルが間違った選択肢を出す図太さはエンジニアの知合いにはない気がする。

で、勝負に勝ちたいなら、二つ選択肢を出すなら、どちらも間違った答えを出して、仕方なしに正しい答えをしぶしぶ飲むふりをするのが正解だと今日ようやく気付いたよ。