我正在尝试学习如何使用Ruby,作为我的第一个应用程序,我想构建一个基于控制台的Blackjack游戏。
我对Ruby结构并不太熟悉,我在家里学习和感受的唯一方法就是构建并从错误中吸取教训。
我正在考虑创建一个Card类,并且Stack类有一组卡片。
但是我不确切知道我需要使用哪种内置类型来保存这些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中存在类似的东西,或者有更好的rubyesque方法来实现这一点。
答案 0 :(得分:2)
Ruby是一种动态语言,因此它通常不依赖于严格的编译时类型检查,因此使得诸如模板化List<Card>
之类的构造相当无用。 Ruby通常有一个通用数据类型的有序集合 - Array
,它非常类似于Java / C#的ArrayList
概念。
因此,除非您希望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(...)
答案 1 :(得分: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]
答案 2 :(得分:1)
两个Ruby Quiz剧集专门用于二十一点。第二个解决方案可能会给你一些想法:http://www.rubyquiz.com/quiz151.html