Rubyで読み取り専用のプロパティを作るメソッドとしてattr_reader
がありますが、これは別途でインスタンス変数に値を代入する必要があります。ということで、
initialize
に書く必要のあるほど本筋の処理に必要な値ではない- 値を得ること自体にそれなりに手間がかかるので、呼ばれなかったら飛ばしたい
- 一度取れば値は変わらない
というような状況の場合、以下のように書くことがあります。
ruby
1# 1行で書く場合 2def some_value 3 @some_value ||= Model.where # 後略 4end 5 6# 複数行になる場合 7def some_vals 8 return @some_vals if @some_vals 9 # 何かしらの取得処理 10 @some_vals = hoge # 得られた結果 11end
しかし、同じ変数名が頻出してあまり綺麗ではないので、以下のように書ければいいなと考えています。
ruby
1 2# 名前は仮名です 3attr_lazy_reader :some_value do 4 Model.where # 後略 5end
自作してもそこまで手間ではないと思うのですが、すでに似たようなgemがあるところで車輪の再発明になってしまうのもよろしくないので、「このようなことができるgemがあるか」を教えていただければと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。