Javaから来て、私はRubyでLinkedListを実装しようとしています。これをJavaで実装する通常の方法は、LinkedListという名前のクラスと、LinkedListの各オブジェクトをNodeオブジェクトとするNodeという専用の内部クラスです。Rubyでプライベート内部クラスを実装する方法
class LinkedList
private
class Node
attr_accessor :val, :next
end
end
私は外部の世界にNodeクラスを公開する必要はありません。しかし、Rubyでこの設定で、私はこれを使用してLinkedListのクラスの外にプライベートNodeクラスのオブジェクトにアクセスすることができます -
node = LinkedList::Node.new
私が知っている、ルビー1.9で、我々はプライベート定数としてノードを指定するprivate_constantメソッドを使用することができます。しかし、これがこれを達成する正しい方法であるかどうか疑問に思っていますか?また、プライベートとして宣言されているにもかかわらず、LinkedListクラスの外にあるNodeオブジェクトを作成できるのはなぜですか?
ルビーではガラスの家に住んでいるので、いつもあなたのプライベートなものを見ている人に慣れてください。あなたが管理できる最高のものは、人々がアイデアを得るのを避けるようになるという丁寧な方法として、「しないでください」と言います。 – tadman
ところで、あなたの質問に答えるか、あなたの問題を解決する答えを受け入れるべきです。回答の左側にある緑色のチェックマークを探します。 –