![](/img/trans.png)
[英]Working scala code using a var in a pure function. Is this possible without a 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.