Scala 读取列表类中的参数值时出现问题

问题描述 投票:0回答:1

鉴于下面的 Scala 列表,我想访问元素

x
y
以及整个
Page
类元素的值。我需要在另一个函数中再次使用这些值。


List(Camp(x=2,UG,Target(List(000f)),List(page=Page(2,4,600,150)),y=8.0))

如何访问这些值?

x=??

y=??

page=??

全部完成,

x
的值必须等于
2
y
必须等于
8.0
并且
page
的值必须等于
Page(2,4,600,150)

提前致谢!

scala playframework akka akka-http
1个回答
0
投票

所以,你有一个带有签名的函数

def yourFunction(param1: Type1, param2: Type2): List[Camp]

根据提供的示例,我将假设以下类是以这种方式定义的

val UG = "UG"
case class Target(floats: List[Float])
case class Page(x: Int, y: Int, a: Int, b: Int)
case class Camp(x: Int, ug: String, target: Target, pages: List[Page], y: Double)

如果您只想获取遵循某些特定规则的列表元素的值,您可以使用

find
,它会返回
Option
。如果找到该元素,则为
Some
,否则为
None

val camps: List[Camp] = yourFunction(param1, param2) // your function returning

val maybeElementFound: Option[Camp] = camps
  .find(camp =>                           // we try to find a `camp` element that follow some criteria
    camp.x == 2                           // x == 2
      && camp.y == 8                      // y == 8
      && camp
          .pages                          // pages is a list, so we need to use some of the methods provided by that class
          .contains(Page(2,4,600,150))    // contains returns true if the element passed exist, otherwise returns false
  )

maybeElementFound match {
  case Some(campFound) => // ... the logic when the element is found
  case None => // ... the logic when the element is not found 
}
© www.soinside.com 2019 - 2024. All rights reserved.