C#の世界から来ています。クラスはオブジェクトの不変な定義であり、各オブジェクトは固定クラスです。 私はclass << selfの話ではないのです class << some_object
def something_unique_to_this_object
# code
end
end
を使用しての可能性に心を開くしようとしています。 私は、1つまたは複数
: class MyClazz
def self.my_class_method(name)
define_method(name) {
# do stuff
}
end
my_class_method :foo
my_class_method :bar
end
# The code above generates i
最近、Rubyでのクラスに関する詳細を調べていて、クラス定義で混乱していました。 Rubyで 、次のようにクラス定義は、 class A
def self.my_method
end
end
あり、私は混乱していた class A
class << self
def my_method
end
end
end
と同じです。
クラスの固有クラス(またはメタクラス)のクラスメソッドとメソッドは、1つのものを定義する2つの方法だけですか? それ以外の場合はどうなりますか? class X
# class method
def self.a
"a"
end
# eigenclass method
class << self
def b
"b"
レッツ・オープンクラスModuleとそれにメソッドを追加:私はこれを行うことによって、このメソッドを呼び出すことができます class Module
def foo
puts "phew"
end
end
、 Class.foo
理解ClassのクラスがClassであり、そのスーパークラスがModuleであるためです。したがって、Moduleで定義されたイン
定数NAMEとメソッドhelloを含むモジュールを作成しました。クラスにモジュールが含まれている場合は、両方の定義を異なるスコープで表示する必要があります。 module A
NAME = 'Otto'
def self.included(base)
base.extend(ClassMethods)
end
def hello(name = '
私はサブクラス化のために構築されたクラスを持っています。 class A
def initialize(name)
end
def some
# to define in subclass
end
end
# usage
p A.new('foo').some
#=> nil
私の場合、インスタンスが1つだけ必要なので、サブクラスを