Ruby Mixin未定义方法

时间:2012-02-23 03:26:40

标签: ruby module mixins

所以,我知道有一个简单的错误,但我似乎无法发现它。我是第一次使用Modules / Mixins,我们非常感谢任何帮助。我一直收到这个错误:

undefined method `this_is' for Value:Module (NoMethodError)

但看起来方法就在那里......这是我的模块和类......

module Value
  def this_is
    puts "#{self.players_hand} is the players hand"
  end
end

require './value.rb'

class Player
  include Value
  attr_accessor :players_hand

  def initialize
    @players_hand = 0
  end

  def value_is
    Value.this_is
  end
end

require './player.rb'

class Game

  def initialize
    @player = Player.new
  end

  def start
    puts @player.players_hand
    puts @player.value_is
  end
end

game = Game.new
game.start

1 个答案:

答案 0 :(得分:1)

当您在include Value类中Player时,您将Value模块的方法作为Player类的一部分,因此this_is方法不是命名空间。知道了,我们需要改变这种方法:

def value_is
  Value.this_is
end

要:

def value_is
  this_is
end