Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 我怎样才能解决这个问题?类的未定义方法_Ruby - Fatal编程技术网

Ruby 我怎样才能解决这个问题?类的未定义方法

Ruby 我怎样才能解决这个问题?类的未定义方法,ruby,Ruby,有问题,运行代码时总是有错误。 期望:为用户添加赢或减少他的余额 undefined method `balance=' for #<Dice:0x0000563d4d4dfd88 @name="foo", @balance=600, @bet=300> Did you mean? balance (repl):22:in `increase_decrease_cash' (repl):62:in `<class:Game>' (repl):29:in `<mai

有问题,运行代码时总是有错误。 期望:为用户添加赢或减少他的余额

undefined method `balance=' for #<Dice:0x0000563d4d4dfd88 @name="foo", @balance=600, @bet=300>
Did you mean?  balance
(repl):22:in `increase_decrease_cash'
(repl):62:in `<class:Game>'
(repl):29:in `<main>'
未定义的方法“balance=”用于#
你是说?平衡
(答复):22:“增加、减少、现金”
(答复):
(答复):29:在"中"
这个错误总是会出现,我会尝试所有我能猜到的东西,但是什么也没有发生,我不明白怎么用谷歌搜索它

class Dice
  attr_accessor :name, :bet
  attr_reader :balance
  def initialize(name, balance, bet)
    @name = name
    @balance = balance
    @bet = bet
  end

  def self.roll
    @roll_dice = rand(1..2)
  end

  def self.check_bet
    if @player.bet > @player.balance
      puts "Enter number from 1 to #{@player.balance}"
    end
  end

  def self.increase_decrease_cash
    if @roll == @my_number
      @player.balance += @player.bet
    else
      @player.balance -= @player.bet
    end
  end
end

class Game < Dice
  @player = Dice.new("foo", 600, 0)
  puts "Hello #{@player.name} your balance is: #{@player.balance}"
  puts "Bones throwing count times"
  a = 2 #gets.chomp.to_i

  while a > 0 do
    puts ""
    puts "Enter your bet !!!"

    # PLAYER BET
    @player.bet = 300 #gets.chomp.to_i
    check_bet
    puts "Respected #{@player.name} your bet is: #{@player.bet}"
    puts "Now select number 1-2"

    # BONES ROLL
    @my_number = roll # gets.chomp.to_i
    puts "###################"
    puts "Now we throw bones"
    @roll = roll
    puts "Nuber is #{roll}"

    if @roll == @my_number
      puts "Your win, you get #{@player.bet}"
      else
      puts "You lose #{@player.bet}"
    end

    p "$$$$"
    p @player.balance
    p "$$$$"
    a -= 1
    increase_decrease_cash
  end
end
类骰子
属性访问器:名称,:赌注
属性读取器:平衡
def初始化(姓名、余额、赌注)
@name=name
@平衡=平衡
@打赌
结束
def自动转鼓
@掷骰子=兰德(1..2)
结束
def自检
如果@player.bet>@player.balance
将“输入从1到#{@player.balance}的数字”
结束
结束
def自我增加\减少\现金
如果@roll==@my_number
@player.balance+=@player.bet
其他的
@player.balance-=@player.bet
结束
结束
结束
班级游戏<骰子
@玩家=骰子。新(“foo”,600,0)
放上“你好{@player.name}你的余额是:{@player.balance}”
放入“骨头投掷计数次数”
a=2#gets.chomp.to#i
当a>0时
放置“”
输入“输入您的赌注!!!”
#玩家赌注
@player.bet=300#get.chomp.to_i
支票
放入“尊敬的{@player.name}您的赌注是:{@player.bet}”
将“现在选择数字1-2”
#骨头滚动
@my_number=roll#get.chomp.to_i
放入“#################”
“现在我们扔骨头”
@滚
把“数字是#{roll}”
如果@roll==@my_number
放上“你赢了,你得到#{@player.bet}”
其他的
放上“你输了”{@player.bet}
结束
p“$$$”
p@player.balance
p“$$$”
a-=1
增加\减少\现金
结束
结束

这个错误总是会出现,我尝试了我能猜到的一切,但什么都没有出现,我不明白如何用谷歌搜索它

attr\u reader
只为
balance
创建get方法。对于
余额
,您需要get和set方法。因为您在初始化方法中设置了
balance
。因此,您应该使用attr\u访问器而不是
attr\u阅读器

class Dice
  attr_accessor :name, :bet
  attr_reader :balance
  def initialize(name, balance, bet)
    @name = name
    @balance = balance
    @bet = bet
  end

  def self.roll
    @roll_dice = rand(1..2)
  end

  def self.check_bet
    if @player.bet > @player.balance
      puts "Enter number from 1 to #{@player.balance}"
    end
  end

  def self.increase_decrease_cash
    if @roll == @my_number
      @player.balance += @player.bet
    else
      @player.balance -= @player.bet
    end
  end
end

class Game < Dice
  @player = Dice.new("foo", 600, 0)
  puts "Hello #{@player.name} your balance is: #{@player.balance}"
  puts "Bones throwing count times"
  a = 2 #gets.chomp.to_i

  while a > 0 do
    puts ""
    puts "Enter your bet !!!"

    # PLAYER BET
    @player.bet = 300 #gets.chomp.to_i
    check_bet
    puts "Respected #{@player.name} your bet is: #{@player.bet}"
    puts "Now select number 1-2"

    # BONES ROLL
    @my_number = roll # gets.chomp.to_i
    puts "###################"
    puts "Now we throw bones"
    @roll = roll
    puts "Nuber is #{roll}"

    if @roll == @my_number
      puts "Your win, you get #{@player.bet}"
      else
      puts "You lose #{@player.bet}"
    end

    p "$$$$"
    p @player.balance
    p "$$$$"
    a -= 1
    increase_decrease_cash
  end
end
attr_accessor :balance