簡體   English   中英

Scala 中沒有 var 的函數

[英]Function without var in scala

我有一個函數,它接受一個字符串和一個 case 類作為輸入並返回字符串作為輸出。

不同的案例類被附加到列表中,並返回具有列表的最終案例類。

我想在不使用 var 的情況下做到這一點。 val 列表將是不可變的,並且不會向其中添加任何數據。 有沒有其他方法可以用 Scala 方式做到這一點?

def getResult(eventName: Option[String], content: Content): String = {
  var list = List.empty[Json]
  val device = Device(
      DEVICE_SCHEMA,
      data = content.data.device
    )
  list = list :+ device.asJson

  val parser = Parser(
      PARSER_SCHEMA,
      data = content.data.parser
    )
  list = list :+ parser.asJson
  val res = Result(
      RESULT_SCHMEA,
      data = list
    )
  res.asJson.noSpaces
}

嘗試像這樣創建內聯列表

def getResult(eventName: Option[String], content: Content): String = {
  val device = Device(
    DEVICE_SCHEMA,
    data = content.data.device
  )
  val parser = Parser(
    PARSER_SCHEMA,
    data = content.data.parser
  )
  Result(
    RESULT_SCHMEA,
    data = List(device.asJson, parser.asJson)  // <== inline list creation
  ).asJson.noSpaces
}

與之前的答案相比,只有一些小的變化。
您不需要val res並且最好在Result之外創建列表以便於閱讀和以后調試:

def getResult(eventName: Option[String], content: Content): String = {
  val device = Device(
    DEVICE_SCHEMA,
    data = content.data.device
  )
  val parser = Parser(
    PARSER_SCHEMA,
    data = content.data.parser
  )

  val jsons = List(device.asJson, parser.asJson)
  Result(
    RESULT_SCHMEA,
    data = jsons
  ).asJson.noSpaces
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM