2

C#では、「内部」クラスまたはメソッドは、それが配置されているアセンブリ内からのみ呼び出すことができます... Rubyには「アセンブリ」またはそれらのような実際のパッケージがありません(gem以外ですが、それらはまったく同じことではありません)が、内部と同様に、メソッドを呼び出すことができる場所を制限する方法があるかどうか疑問に思っていますか?

小さなフレームワークを更新して、3 つのメソッドを持つクラスを作成しました。フレームワークからのみ 3 つのメソッドのうち 2 つを呼び出し、3 つ目のメソッドはどこからでも呼び出せるようにしたいと考えています。これはルビーで可能ですか?それとも私はこれについて間違っているので、2つの別々のクラスを作成する必要がありますか? また ?

4

1 に答える 1

2

残念ながら、Rubyはカプセル化の点でかなり欠けている言語です。容量はかなり限られているので、いいえ、C#内部キーワードに相当するものはありません。おそらくあなたの場合、2つの別々のクラスの方が良いでしょうが、明確なdocstringまたは特別な命名スキームは、大幅な変更なしで同じことを行うことができます。

また、internalキーワードは、ライブラリ開発者にとって便利なものにすぎないことに注意する必要があります。誰かが内部としてマークされたメソッドまたはクラスを使用することを本当に妨げるわけではありません。コードインジェクション、AOPなどでこれらの保護を回避する方法があります。

于 2009-10-26T16:12:15.083 に答える