3
A
答えて
-2
Object
はRubyの予約語なので、クラス名として使用しないでください。
10
実際には、このコードはモジュール内にあり名前空間になっているので問題なく動作するはずです。簡単なテストのために:あなたは、オブジェクトの一部を指しますその内側に他のクラスやモジュール、中にいくつか::オブジェクトが含まれている場合
module Some
class Object
def foo
"bar"
end
end
end
Some::Object.new.foo # "bar"
Some::Object.new.class # "Some::Object"
# And it doesn't pollute the global namespaced Object class:
Object.new.respond_to?(:foo) # false
それは潜在的に、しかし、混乱や曖昧である可能性があります。しかし、そのクラスやモジュールの外には何の影響も与えません。
+0
これは正しい答えです:唯一の本当の欠点は混乱していることです。 – Chuck
3
落とし穴がいくつかありますが、機能します。これを行うと、既にRubyにあるObjectクラスが展開されます。
class Object
def hello
end
end
名前空間にすると、その名前空間に新しいクラスが作成されます。
module Foo
class Object
# ...
end
end
技術的に言えば、これは問題ではありません。
組み込みのObject
クラスを参照する場合は、::Object
を使用する必要があります。あなたはそれほど頻繁にはしませんが、大きな問題ではありません。
他の問題は、他の開発者にとって非常に混乱する可能性があることです。これは考慮する必要があります。あなたのスニペットからこのSome::Object
クラスが何をするのかは分かりませんが、おそらくSome::Record
、Some::Entity
が理にかなっています。
関連する問題
- 1. クラスとモジュールのRuby名前空間?
- 2. 私はアニメーションという名前のクラスと同じディレクトリにanimationResources.xamlという名前のリソースディクショナリを持つクラスC#
- 3. Rubyのクラス名の前にある二重コロンですか?
- 4. エラー:クラス」内の「VALUE_TYPE」という名前の無いタイプ
- 5. Rubyクラスの名前はどのように取得できますか?
- 6. Fractionという名前の新しいクラスを作成する
- 7. RubyのObject#taintとObject#trustメソッドは何ですか?
- 8. Rubyで名前付きクラスを動的に定義する
- 9. プロデューサメソッドと名前付きクラス
- 10. どのように私はクラスをObject-Cの名前空間で区切りますか?
- 11. Rubyの配列名quals次の名前
- 12. モジュール名のない参照用rubyクラス
- 13. ユビキタスアナログとRubyのUnixコマンドパイプラインの `Object#tap`?
- 14. RubyのObjectとBasicObjectの違いは何ですか?
- 15. NSInvalidUnarchiveOperationException:NSLayoutConstraintという名前のクラスをインスタンス化できませんでした
- 16. JavaのObjectクラスとは何ですか?
- 17. Ruby On Rails - 名前空間
- 18. Rubyで関数を名前で渡す
- 19. rubyの別のクラスにクラス名を変数として渡す
- 20. C++クラスの宣言と名前空間
- 21. 名前空間のクラスと構造体
- 22. シリアライズ可能なクラスと名前のリファクタリング
- 23. 匿名クラスと名前付き内部クラス? - ベストプラクティス?
- 24. なぜ "var"という名前のクラスを作成できますか?
- 25. Javaのクラス<?>とクラス<Object>の違い
- 26. RubyやRailsにgetaddrinfoという名前の関数がありますか?
- 27. 私は同じ名前を持つクラスとモジュールを持つクラス
- 28. 人間の名前の解析とRubyでの照合
- 29. 「 '」という名前がコマンドレットの名前として認識されない
- 30. という名前のキャプチャ(Perlの)
ObjectはRubyの予約語ではありません。String、Hashなどと同様に、特定のクラスを参照するグローバルに定義された定数です。Rubyの予約語は 'if'、' return'などです。 –