2

我正在尝试学习如何使用 Ruby,作为我的第一个应用程序,我想构建一个基于控制台的二十一点游戏。

我对 Ruby 结构不太熟悉,我学习和感到宾至如归的唯一方法就是构建东西并从错误中吸取教训。

我正在考虑创建一个 Card 类,并且有一个 Stack 类有一个 Cards 集合。

但是我并不确切知道我需要使用什么内置类型来保存这些 Card 对象。

这是我的卡片类:

class Card

  attr_accessor :number, :suit

  def initialize(number, suit)
    @number = number
    @suit = suit
  end

  def to_s
    "#{@number} of #{@suit}"
  end
end

因为我来自 C#,所以我想使用 List Cards {get;set;} 之类的东西——在 Ruby 中是否存在类似的东西,或者可能有更好的更 ruby​​esque 的方式来做到这一点。

4

3 回答 3

2

Ruby 是一种动态语言,因此它通常不依赖于严格的编译时类型检查,从而使诸如模板化之类的构造变得List<Card>毫无用处。Ruby 通常具有一种通用的有序集合数据类型 - Array,它与ArrayListJava/C# 的概念非常相似。

因此,除非您想Stack变得特别,否则您可以Array按原样使用:

@stack = []
@stack << Card.new(6, :spades)
@stack << Card.new(10, :hearts)

Array或以某种方式扩展:

class Stack < Array
  # some ultra-cool new methods
end

@stack = Stack.new
@stack << Card.new(...)
于 2011-02-20T21:23:26.960 回答
2

Ruby 的内置Array类型具有像堆栈一样的方法:

a = [1, 2, 3]  # arrays can be initialized with []
a.push(4)      # a is now [1, 2, 3, 4]
a.pop          # returns 4, a is now [1, 2, 3]
于 2011-02-20T21:23:51.910 回答
1

两集 Ruby Quiz 专门针对二十一点。第二个的解决方案可能会给你一些想法:http ://www.rubyquiz.com/quiz151.html

于 2011-02-20T21:46:58.137 回答