我正在中级上执行ruby战士的第二级,每次运行时我都会收到这个错误,尽管我似乎不应该这样做。我对ruby很陌生,所以如果有人能告诉我为什么会发生这种情况,我会很感激,尽管我正在经过战士的视线,并且视线有一个插槽用于的变量
这是错误:
wrong number of arguments (1 for 0)
Player.rb:24:in `glance'
Player.rb:6:in `play_turn'
这是我的代码:
class Player
def play_turn(warrior)
@warrior = warrior
glance(warrior)
actions
end
def actions
@warrior = warrior
glance(warrior)
if rightempty
warrior.walk!(:right)
elsif forwardenemy && rightempty == false
warrior.fight!
else
warrior.walk!(warrior.direction_of_stairs)
end
end
def glance(warrior)
@wariror = warrior
forwardempty = warrior.feel.empty?(:forward)
leftempty = warrior.feel.empty?(:left)
rightempty = warrior.feel.empty?(:right)
backwardempty = warrior.feel.empty?(:backward)
forwardenemy = warrior.feel.enemy?(:forward)
leftenemy = warrior.feel.enemy?(:left)
rightenemy = warrior.feel.enemy?(:right)
backwardenemy = warrior.feel.enemy?(:backward)
forwardcaptive = warrior.feel.captive?(:forward)
leftcaptive = warrior.feel.captive?(:left)
rightcaptive = warrior.feel.captive?(:right)
backwardenemy = warrior.feel.captive?(:backward)
end
end
问题不在于传递给glance
的参数数量,而在于该方法中发生的事情。
您用一个参数调用empty?
,例如:forward
,但它不需要任何参数-因此出现错误"1 for 0"