I was wonder if it is possible to assign value of a class to another class like this example.
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
I get an "`initialize': wrong number of arguments (given 2, expected 0) (ArgumentError)" message. So i don't know if i get error in the code or it is not possible to assign class to another class this way.
CodePudding user response:
You need to define your initialize method to take num1 and num2, and number1 and number2 as arguments. Otherwise it is assigning the return value of the accessor methods to the instance variables, and those methods are just returning 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
You will still get an error resulting from temp not being defined before you attempt to use it.
