【问题标题】:Assign value of a class to another class将一个类的值赋值给另一个类
【发布时间】:2022-11-21 02:22:00
【问题描述】:

我想知道是否可以像这个例子那样将一个类的值分配给另一个类。

class Test1
  attr_accessor :num1, :num2
  def initialize
    @num1 = num1
    @num2 = num2
  end
end

class Test2
  attr_accessor :number1, :number2
  def initialize
    @number1 = number1
    @number2 = number2
  end
end

num = Test1.new(1, 2)
number = Test2.new(11, num)

number.number2 = temp
puts temp.num2 

我收到“`initialize':参数数量错误(给定 2,预期 0)(ArgumentError)”消息。所以我不知道我是否在代码中出错,或者无法通过这种方式将类分配给另一个类。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您需要定义您的initialize 方法以将num1num2,以及number1number2 作为参数。否则它会将访问器方法的返回值分配给实例变量,而这些方法只返回nil

    class Test1
      attr_accessor :num1, :num2
      def initialize(num1, num2)
        @num1 = num1
        @num2 = num2
      end
    end
    
    class Test2
      attr_accessor :number1, :number2
      def initialize(number1, number2)
        @number1 = number1
        @number2 = number2
      end
    end
    

    在您尝试使用它之前,您仍然会收到由于 temp 未定义而导致的错误。

    【讨论】:

    • 谢了哥们。它确实有效。
    猜你喜欢
    • 2018-02-05
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多