質問編集履歴

1 質問が近視眼的になってたので、「本当にやりたいこと」を追記しました

ib-t-s

ib-t-s score 9

2018/08/23 17:50  投稿

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

    16857 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る