[ruby-list:47263] Structに型宣言/型変換を組み込みたい

From: "MISHIMA, Hiroyuki" <missy@...>
Date: 2010-07-29 02:40:12 UTC
List: ruby-list #47263
長崎大の三嶋と申します。

組み込みライブラリのStructは,未定義メンバーへのアクセスがエラーになって
くれる点が気に入って頻用しています。

自分としては,Structは,Hashでも,OpenStructでもない時点で,プログラマの
「静的な宣言」に近い気持ちが込められているじゃないかと理解しています。

これを推し進めて,型宣言というか,暗黙/強制の型変換の仕組みをStructに組
み込んでしまいたいと考えました(「型」というのはたぶん言葉の使い方を間
違っていますね…)。

たとえば(ruby 1.9風味の動かないコードですが)

Fields = Struct.new :number, :mojiretsu do
	force_member :number, :to_i
	force_member :mojiretsu, to_s
end
Fields.new 12345, "23456" # =>(1)
Fields.new "12345", 23456 # =>(2)

とした場合,
(1)は #<struct Fields number=12345, mojiretsu="23456">でいいのですが
(2)は #<struct Fields number=12345, mojiretsu="23456">に暗黙の変換をして
しまうか,エラーにしてしまいたいのです。

実は,これはいい思いつきだと,自分でいろいろやってみたのですが,私には力
不足でした。

そこで,
(1)こうすればできる/既にできる
(2)ここを参考にして自分でやってみろ
(3)そもそもこれを必要と思う考え方が間違っている
といったアドバイスをいただければ幸いです。

三嶋博之
-- 
長崎大学大学院医歯薬学総合研究科人類遺伝学(原研遺伝)
三嶋 博之
MISHIMA, Hiroyuki, DDS, Ph.D.
COE Research Fellow
Department of Human Genetics
Nagasaki University Graduate School of Biomedical Sciences

In This Thread

Prev Next