Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-参数数目错误(1/2)_Ruby - Fatal编程技术网

Ruby-参数数目错误(1/2)

Ruby-参数数目错误(1/2),ruby,Ruby,问题是,当我试着用一种产品时,它是有效的,但用一种水果就不行了,并且出现了以下错误: shoppingCart.rb:7:in `initialize': wrong number of arguments (1 for 2) (Argument Error) from shoppingCart.rb:21:in `initialize' from shoppingCart.rb:37:in `new' from shoppingCart.rb:3

问题是,当我试着用一种产品时,它是有效的,但用一种水果就不行了,并且出现了以下错误:

shoppingCart.rb:7:in `initialize': wrong number of arguments (1 for 2) (Argument
Error)
        from shoppingCart.rb:21:in `initialize'
        from shoppingCart.rb:37:in `new'
        from shoppingCart.rb:37:in `<main>'
shoppingCart.rb:7:in'initialize':参数数量错误(1代表2)(参数
(错误)
来自shoppingCart.rb:21:in'initialize'
来自shoppingCart.rb:37:in'new'
来自shoppingCart.rb:37:in`'
代码:

类产品
属性存取器:名称
属性存取器:价格
属性存取器:折扣
def初始化(名称、价格)
@name=name
@价格=价格
结束
def计算价格
把{@name}的价格定为{@price}欧元
结束
结束
类水果<产品
def初始化(名称、价格)
超级(姓名)
超级(价格)
结束
def折扣()
@折扣=10
结束
结束
香蕉=水果。新(“香蕉”,10)
香蕉冰

您有一个错误,因为您在
水果#初始化
中使用一个参数调用
超级
,但
产品#初始化
使用两个参数。由于在
Fruit#initialize
方法中不执行任何特定于
Fruit
的操作,因此根本不需要此方法

您有一个错误,因为您在
水果#初始化
中使用一个参数调用
超级
,但
产品#初始化
使用两个参数。由于在
Fruit#initialize
方法中不执行任何特定于
Fruit
的操作,因此根本不需要此方法

当您从
Fruit#initialize
调用
super
时,它调用的是
Product#initialize
,它包含两个参数。因此,使用两个参数调用一次,而不是每个参数调用一次:

super(name, price)
由于这些参数与
Fruit#initialize
本身所采用的参数相同,因此您也可以将它们关闭,以便自动传递相同的参数:

super
但是,由于您没有执行
水果#初始化
中特定的
水果
,因此可以完全删除该方法以获得相同的结果:

class Product 
  def initialize(name, price)
     puts "Into Product#Initialize"
  end
end

class Fruit < Product
end

banana = Fruit.new(banana, 10)
# Into Product#Initialize
# => #<Fruit:0x007f9da91cef00>
类产品
def初始化(名称、价格)
将“放入产品#初始化”
结束
结束
类水果<产品
结束
香蕉=水果。新的(香蕉,10)
#进入产品#初始化
# => #

当您从
水果#初始化
调用
超级
时,它调用的是
产品#初始化
,它包含两个参数。因此,使用两个参数调用一次,而不是每个参数调用一次:

super(name, price)
由于这些参数与
Fruit#initialize
本身所采用的参数相同,因此您也可以将它们关闭,以便自动传递相同的参数:

super
但是,由于您没有执行
水果#初始化
中特定的
水果
,因此可以完全删除该方法以获得相同的结果:

class Product 
  def initialize(name, price)
     puts "Into Product#Initialize"
  end
end

class Fruit < Product
end

banana = Fruit.new(banana, 10)
# Into Product#Initialize
# => #<Fruit:0x007f9da91cef00>
类产品
def初始化(名称、价格)
将“放入产品#初始化”
结束
结束
类水果<产品
结束
香蕉=水果。新的(香蕉,10)
#进入产品#初始化
# => #

不带任何参数调用
super
也可以。太好了!它工作起来容易理解,下次我会更加小心。不带任何参数调用
super
也会工作。太好了!这很有效,也很容易理解,下次我会更加小心。为什么人们会对此投反对票?即使措辞拙劣,也很清楚被问到了什么。我不明白为什么,我只是在学习如何用相同的例子来使用ruby。为什么人们对此投反对票?即使措辞拙劣,问题也很清楚。我不明白为什么,我只是在学习如何使用ruby和相同的例子。