【发布时间】:2011-11-23 17:13:17
【问题描述】:
我有一个例子,我想调用一个方法 n 次,其中 n 是一个 Int。在 Scala 中是否有一种以“函数式”方式执行此操作的好方法?
case class Event(name: String, quantity: Int, value: Option[BigDecimal])
// a list of events
val lst = List(
Event("supply", 3, Some(new java.math.BigDecimal("39.00"))),
Event("sale", 1, None),
Event("supply", 1, Some(new java.math.BigDecimal("41.00")))
)
// a mutable queue
val queue = new scala.collection.mutable.Queue[BigDecimal]
lst.map { event =>
event.name match {
case "supply" => // call queue.enqueue(event.value) event.quantity times
case "sale" => // call queue.dequeue() event.quantity times
}
}
我认为闭包是一个很好的解决方案,但我无法让它发挥作用。我也尝试过使用 for 循环,但这不是一个漂亮的功能解决方案。
【问题讨论】:
-
您不会获得具有可变队列的功能解决方案。
-
@Apocalisp:可变队列不是必需的。
标签: scala loops recursion closures anonymous-function