は、私はほとんどすべてがRubyでオブジェクトがどのようにブログ記事を書いている、と私は、次の例を介してこれを表示するようにしようとしている:クラスのインスタンスメソッドを呼び出すと、メソッドとして初期化されないのはなぜですか?
はclass CoolBeans
attr_accessor :beans
def initialize
@bean = []
end
def count_beans
@beans.count
end
end
だから、クラスを見てから、私たちはそれを持って言うことができます4つのメソッド(もちろん、私が間違っている場合を除き):新しいインスタンスが
- それはそれはそれはそれはでき
- を持っているどのように多くの豆数えることができる豆のデフォルトの空の配列を初期化することができますそれが持っていた豆の数を(
attr_accessor
) - それは私がそれを持っているもの、インスタンスメソッド、クラス自身に尋ねるとき、私は見ていない、しかし)も
attr_accessor
を通じて空の配列(へ)
をより多くの豆を書く(または追加することができますデフォルトinitialize
方法:
CoolBeans.new.class.instance_methods
# => [:beans, :beans=, :count_beans, :lm, :lim, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, :clone, :dup, :itself, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :to_s, :inspect, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :singleton_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
これはinitializeメソッドがインスタンスメソッドではないことを意味するのでしょうか?そうでない場合は、それがクラスCoolBeans
で利用可能なメソッドとして表示されないのはなぜですか?
インスタンス変数にエラーがあります。 –
3と4に関して:正確に言えば、 'attr_accessor'は配列の検査や操作とは関係ありません。 '@ beans'に割り当てられたオブジェクトを返すインスタンスメソッド' beans'と '@ beans'に新しいオブジェクトを割り当てる' beans = 'メソッドを作成します。 – Stefan
ありがとう - 私はそれを変更します。 – Becca