Java vs Rubyの言語比較記事へのつっこみをお勉強
↓の記事の内容に誤りが多く含まれているので、
http://japan.internet.com/column/developer/20080408/26.html
各地でつっこみが行われています。
http://d.hatena.ne.jp/rubikitch/20080409/1207735420
http://talototo.blog48.fc2.com/blog-entry-271.html
というわけでRuby側の間違い項目を修正してみよう。ドキドキ・・。
元記事のコードはこんな感じ。
module Catalog PI=3.1419 @journal def setJournal(journal) @journal=journal end end
require Catalog class CatalogEntry include Catalog end
・・なんかまあ色々謎な点がありますが、出来る限り原型をとどめたまま修正するとするなら、、
# catalog.rb module Catalog PI = 3.1419 attr_writer :journal end
# catalog_entry.rb require 'catalog' class CatalogEntry include Catalog def hoge puts PI puts @journal end end c = CatalogEntry.new c.journal = "kenmaz" c.hoge #=>3.1419 #=>"kenmaz"
ということでOK?
モジュールとクラスが同じファイルに書かれていればそもそもrequireは不要なのだが、元記事筆者はJavaの習慣からそれぞれを別ファイルで定義して、さらに*.rbファイル名ではなくモジュール名をrequireしてしまった点が問題ということかな。あとは、@journalがモジュールオブジェクトのインスタンス変数として定義されてしまっているところとか(たしかにこれはJavaに慣れているとちょっと戸惑う)、瑣末だけどメソッド名はsetJournalよりもset_journal、というかアクセサーつかうべき、とか。そんなところでしょうか>Ruby識者の方々
ブログはともかく、Web記事執筆ってのは突っ込みの即時性が高いので恐ろしい。