سؤال

وأنا ربما تفعل شيئا غبيا ولكن أنا لا يمكن معرفة ما هو عليه.

وإخراج اراه من هذا البرنامج هو

foo

test

وماذا أتوقع أن أراه هو

foo
abc
test

لا أحد يرى أي شيء من الواضح أن الخطأ هنا؟

class Foo

    def initialize(l)
    @label = l
    end

    def label
    @label
    end

    def abc
    @abc
    end

    def abc=(abc)
    @abc
    end

end

foo = Foo.new("foo")
foo.abc=("abc")
puts foo.label
puts foo.abc
puts "test"
هل كانت مفيدة؟

المحلول

وأنت لم تطأabc في طريقة abc= الخاص بك. ينبغي أن تبدو

def abc=(val)
  @abc = val
end

نصائح أخرى

وبالإضافة إلى الإجابة لوغان الذي يخبرك ما هو الخطأ، وهنا كيف أن الخطأ لم يحدث ان وقعت في المقام الأول:

class Foo
  def initialize(l)
    @label = l
  end

  attr_reader :label
  attr_accessor :abc
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top