多维数组 - “初始化”:参数数量错误(1 代表 0)
Multidimestional Array - `initialize': wrong number of arguments (1 for 0)
我在 ruby rails 中还是新人。今天我正在尝试编写一些代码,这些代码可以 运行 以下内容:
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
我在设置初始化时遇到问题。我的代码如下,有人可以帮我吗?
非常感谢
class Subary
attr_accessor :num1, :num2, :num3, :num4
def initialize (num1, num2, num3, num4)
self.num1 = num1
self.num2 = num2
self.num3 = num3
self.num4 = num4
end
def output_subary
puts "#{num1}#{num2}#{num3}#{num4}"
end
end
# subary = Subary.new(0,0,0,0)
# puts subary.output_subary
class Image
def initialize
@subarys = []
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
end
def output_image
@subarys.each do |list|
list.output_subary
end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
`initialize': wrong number of arguments (1 for 0)
此错误意味着,initialize
方法不接受任何参数 (0),但您向它传递了一个参数。在 Image
class 中更改 initialize
方法的定义。然后,它应该工作。
class Subary
attr_accessor :num1, :num2, :num3, :num4
def initialize(sub_array)
self.num1 = sub_array[0]
self.num2 = sub_array[1]
self.num3 = sub_array[2]
self.num4 = sub_array[3]
end
def output_subary
puts "#{num1}#{num2}#{num3}#{num4}"
end
end
# subary = Subary.new(0,0,0,0)
# puts subary.output_subary
class Image
def initialize(array_of_arrays)
@subarys = []
@subarys << Subary.new(array_of_arrays[0])
@subarys << Subary.new(array_of_arrays[1])
@subarys << Subary.new(array_of_arrays[2])
@subarys << Subary.new(array_of_arrays[3])
end
def output_image
@subarys.each do |list|
list.output_subary
end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
# => 0000
# => 0100
# => 0001
# => 0000
我在 ruby rails 中还是新人。今天我正在尝试编写一些代码,这些代码可以 运行 以下内容:
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
我在设置初始化时遇到问题。我的代码如下,有人可以帮我吗? 非常感谢
class Subary
attr_accessor :num1, :num2, :num3, :num4
def initialize (num1, num2, num3, num4)
self.num1 = num1
self.num2 = num2
self.num3 = num3
self.num4 = num4
end
def output_subary
puts "#{num1}#{num2}#{num3}#{num4}"
end
end
# subary = Subary.new(0,0,0,0)
# puts subary.output_subary
class Image
def initialize
@subarys = []
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
@subarys << Subary.new(:num1, :num2, :num3, :num4)
end
def output_image
@subarys.each do |list|
list.output_subary
end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
`initialize': wrong number of arguments (1 for 0)
此错误意味着,initialize
方法不接受任何参数 (0),但您向它传递了一个参数。在 Image
class 中更改 initialize
方法的定义。然后,它应该工作。
class Subary
attr_accessor :num1, :num2, :num3, :num4
def initialize(sub_array)
self.num1 = sub_array[0]
self.num2 = sub_array[1]
self.num3 = sub_array[2]
self.num4 = sub_array[3]
end
def output_subary
puts "#{num1}#{num2}#{num3}#{num4}"
end
end
# subary = Subary.new(0,0,0,0)
# puts subary.output_subary
class Image
def initialize(array_of_arrays)
@subarys = []
@subarys << Subary.new(array_of_arrays[0])
@subarys << Subary.new(array_of_arrays[1])
@subarys << Subary.new(array_of_arrays[2])
@subarys << Subary.new(array_of_arrays[3])
end
def output_image
@subarys.each do |list|
list.output_subary
end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
# => 0000
# => 0100
# => 0001
# => 0000