前提・実現したいこと
Rubyで、同じモジュール内からのみアクセスできるような、モジュール内クラスのインスタンスメソッドを定義したい
該当のソースコード
ruby
1module Sample 2 class A 3 def foo 4 puts 'boo' 5 end 6 def bar 7 self.foo 8 end 9 end 10 class B 11 def bar 12 A.new.foo 13 end 14 end 15end
上記のコードに対して、
ruby
1A.new.bar # -> 'boo' 2B.new.bar # -> 'boo' 3A.new.foo # -> エラーか例外が出る
となるようにしたいのです。
Javaでいうところのアクセス修飾子をつけない状態に近いでしょうか。
補足(本当にやりたいこと)
module 内に、
クラスA:とあるデータ構造を表現
クラスB:外部から与えられる入力をもとにAのインスタンスを作成
があり、B から A に対して、A の色々なメソッド(主に各種setter)を呼びたいのです。
が、これらのsetterは外部からは呼べないようにしたい(想定外の使われ方を排除したい)、さてどうするか、というのが本当にやりたいことになります。
ですので、そういう場合はRubyではこういう風に書くのが定番だよ、という答えでも構いません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。