我正在学习斯卡拉.感谢Odersky和所有其他作者的出色工作,这是非常有前途的.
我把一个欧拉问题(http://projecteuler.net/)带到了一个更加极小的例子.而我正试图以功能的方式.所以这不是"请立即回答我,否则我的老板会杀了我",但是"如果你有时间,请你帮助一位势在必行的语言程序员去实现功能世界吗?"
问题:我想要一个扑克牌课.一个扑克之手是由一些卡片组成的,从0到5.我想建立一个卡片列表,这就是:我的Hand类将是不可变的,如果我想添加一张卡片,那么我创建了一个新的Hand对象.所以我需要一个可以创建为"val"的Card集合,而不是var.第一步:构造函数,每个卡数一个.但是Card的集合在每个构造函数中处理,所以我必须将它作为var!
这是代码,Card类只是一个Suit和一个Value,作为一个字符串传递给构造函数("5S"是黑桃的5个):
class Hand(mycards : List[Card]) {
// this should be val, I guess
private var cards : List[Card] = {
if (mycards.length>5)
throw new IllegalArgumentException(
"Illegal number of cards: " + mycards.length);
sortCards(mycards)
}
// full hand constructor
def this(a : String, b : String, c : String, d : String, e : String) = {
this(Nil)
// assign cards
val cardBuffer = new ListBuffer[Card]()
if ( a!=null ) cardBuffer += new Card(a)
if ( …Run Code Online (Sandbox Code Playgroud)