2011-06-15 (水) [長年日記]
■ [Ruby] Ruby で Array を継承したクラスをうまくあつかう
どうなんじゃろう。
# -*- coding: utf-8 -*-
# http://subtech.g.hatena.ne.jp/secondlife/20110615/1308132468
class MyArray < Array
def self.method_added(name)
orig = "#{name}_orig".to_sym
@methods ||= []
return if @methods.any?{|i| i == name or i == orig}
@methods.push orig, name
alias_method orig, name
args = Array.new(instance_method(orig).arity) {|i|
"arg#{i}"
}.push("&b").join(',')
class_eval <<-EOF
def #{name}(#{args})
rt = #{orig}(#{args})
(rt.class == Array) ? self.class.new(rt) : rt
end
EOF
end
def odd
select {|f| f % 2 == 0 }
end
end
a = MyArray.new([1, 2, 3])
p a.odd.class #=> MyArray
■ [本]
問題解決のための高速思考ツール(デビッド ストレイカー/David Straker/富沢 昇)
3円で売ってたので買ってみた(実際には送料がかかるので250円くらい)。ポストイットをList・Tree・Map(グラフ)に構造化する。それぞれ2種類あって、計6種類。訳者はこれをコンピュータ科学のデータ構造と同じだと言っている。で、情報をFOG因子[F(ファクト)・O(オピニオン)・G(ゲス)]に分類する。まあ、いたって普通かなあ。
[ツッコミを入れる]
