gpt4 book ai didi

scala - 更改列表并返回已删除内容的正确(功能)方法是什么?

转载 作者:行者123 更新时间:2023-12-04 23:54:12 26 4
gpt4 key购买 nike

我正在尝试学习 Scala,并决定创建一个扑克应用程序来了解一些类对象。我的套牌工作正常,但我已经到了需要抽 5 张牌的地步。到目前为止,我有:

import util.Random

case class Card(value: Int, color: String)

class Deck {
private var deck = newDeck

def draw(amount: Int): List[Card] = {
val ret = deck.take(amount)
deck = deck.drop(amount)
ret
}

def newDeck: List[Card] = {
Random.shuffle((1 to 13).map(x =>
List(Card(x, "D"), Card(x, "C"), Card(x, "H"), Card(x, "S"))).toList.flatten)
}

override def toString: String = "Deck has " + deck.length + " cards left."
}

这个抽奖功能有两个步骤似乎不太正确 - 但我不知道我怎么能(或应该)无论有多少张牌都可以取顶,并将列表保持在没有这些牌的状态?

(顺便说一句,如果有人对甲板创建/洗牌有更好的功能,我全神贯注,这似乎也有点麻烦......但我的主要问题是列表状态)

最佳答案

撇开你是否想让甲板成为“var”,你可以这样做takedrop同时,使用 splitAt

def draw(amount: Int): List[Card] = {
val (ret, remainder) = deck.splitAt(amount)
deck = remainder
ret
}

关于scala - 更改列表并返回已删除内容的正确(功能)方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com