【问题标题】:Play Scala changing custom List item value播放 Scala 更改自定义列表项值
【发布时间】:2015-10-20 13:26:27
【问题描述】:

在我的Play Framework Scala 项目中,我有一个custom List。一些操作我需要用another value 更改/替换自定义列表项值。Scala 没有Java 的方法,如下所示

List<Int> testList = new ArrayList<Int>();
testList.get(0)// get the testList 0 th value

我需要什么

case class ImageGrid(
    image_id: Int,
    image_name: String,    
    image_desc: String   
    )

val ImageGridList:List[ImageGrid] = //based on some DB Query I set values

如何更改/替换ImageGridList's image_nameimage_desc0th1st 位置

【问题讨论】:

  • Scala 确实有一个List.get,它被称为apply,你可以直接使用scalaList(0)。无论如何,您尝试过什么来实际实施您的解决方案?

标签: scala playframework playframework-2.3 scala-collections typesafe-activator


【解决方案1】:

使用 scala.collection.mutable.ArrayBuffer 代替 List

val list = scala.collection.mutable.ArrayBuffer(1,2,3,4)

按索引设置位置值:

list(0)=5

【讨论】:

  • 你能用一些代码sn-ps解释一下吗?会有用的
  • 好的,可以把List[ImageGrid]改成ArrayBuffer[ImageGrid]
  • 可以使用ArrayBuffer的appendAll方法
【解决方案2】:

您可以使用可变的ArrayBuffer,这是一个示例代码;

scala> import scala.collection._
 import scala.collection._

 scala> case class ImageGrid(
   |     image_id: Int,
   |     image_name: String,    
   |     image_desc: String   
   |     )
defined class ImageGrid

scala> val imageGridList = mutable.Buffer[ImageGrid](ImageGrid(1,"img1","img2"))
imageGridList: scala.collection.mutable.Buffer[ImageGrid] = ArrayBuffer(ImageGrid(1,img1,img2))

scala> imageGridList(0) = ImageGrid(1,"img name changed","img2")

scala> imageGridList
res1: scala.collection.mutable.Buffer[ImageGrid] = ArrayBuffer(ImageGrid(1,img name changed,img2))

要将现有 List 转换为 ArrayBuffer,请使用 toBuffer

【讨论】:

  • 我已经完成了获取List[ImageGrid] 所需的过程,所以如何将List[ImageGrid] 转换为ArrayBuffer[ImageGrid]
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2014-09-03
  • 2018-11-23
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多