2016-06-13 6 views
0

でメモ化とクラスの機能のすべてまたは大部分を定義します。は、私は良い人間の名前を持ついくつかのメソッドを持っている、と私は例えば、それぞれに対してメモ化を持つ終わる名前

class MyClass 
    def one_good_name 
    @one_good_name ||= some good logic ... 
    end 
end 

私が探しています1つのクラスレベルの方法またはそれを作るための1行の方法。任意の引数を受け付けません

attr_accessor_memoizied :one_good_name, ... 

:代わりにどこでも@method_name ||=を定義する、のようないくつかの魔法はありますか?

+0

はどのようにして、「いくつかの良いロジック...」の部分を期待していますか? – sawa

答えて

4

私はmemoistルビーの宝石でこれを実装するお勧めします:あなたが望む方法で表現することが

require 'memoist' 
class MyClass 
    extend Memoist 
    def one_good_name 
    # some good logic ... 
    end 

    memoize :one_good_name 
end 
+0

私の悪い、私はこの宝石を見つけるために正しい方法はありませんでした、偉大な、ちょうどいいとチャンスはそこに解決策がある、私はルビーの哲学を愛する –

+2

あなたはRuby 2.1以降を使用している場合は、 'memoize def one_good_name ; 'def'は既に定義されたメソッドの名前をシンボルとして返すので、' end'を使用します。 –

関連する問題