ruby 实现一个基本的Die类,可以用一些边来初始化。然后我们可以掷骰子,返回一个随机数。它守

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 实现一个基本的Die类,可以用一些边来初始化。然后我们可以掷骰子,返回一个随机数。它守相关的知识,希望对你有一定的参考价值。

#######################################PSEUDOCODE###################################

# INPUT, OUTPUT & PSEUDOCODE:
# Initialize  =>      INPUT: number of sides = integer > 0
#                     OUTPUT: new Die object
#                     # set instance variable sides to value of passed argument
# Die#sides   =>      INPUT: none
#                     OUTPUT: number of sides
                      # getter/accessor method for sides
# Die#roll    =>      INPUT: none
#                     OUTPUT: random number between 1 and constructor input
#                     # create range for by accessing @sides 
#                     # and return randomly number in range

###################################INITIAL CODE#####################################

class Die
  def initialize(sides)
    @sides = sides
    unless @sides > 0
      raise ArgumentError.new("Number of sides must be at least 1")
    end
  end

  def sides
    @sides
  end

  def roll
    rand(1..@sides)
  end
end

####################################REFACTORED CODE#################################

class Die
  attr_reader :sides

  def initialize(sides)
    raise ArgumentError.new("#{sides} sides? Really?") if sides < 1
    @sides = sides
  end

  def roll
    rand(1..@sides)
  end
end

###################################DRIVER CODE######################################

random = rand(1..30)

die = Die.new(random)
p die.sides == random
p (1..random).cover?(die.roll)

###################################REFLECTION#######################################

# ? need unit testing framework e.g., rspect, TEST::UNIT -> assert_raise 
# I wondered if Ruby's attr_reader was literally an alias of the getter method--that it would pass the 
# rspec testing specifically for inclusion of #sides method; seems like it does...

以上是关于ruby 实现一个基本的Die类,可以用一些边来初始化。然后我们可以掷骰子,返回一个随机数。它守的主要内容,如果未能解决你的问题,请参考以下文章

ruby 使用Die Class 1中的前一个Die类,实现一个新的Die类,它将一个字符串数组作为输入。当Die#roll

ruby 使用Die Class 1中的前一个Die类,实现一个新的Die类,它将一个字符串数组作为输入。当Die#roll

Ruby Socket 编程

Linux 计算机网络 从 ping 来初窥计算机网络

Linux 计算机网络 从 ping 来初窥计算机网络

用不同的参数和默认值在 Ruby 中初始化类的最有效方法是啥?