gpt4 book ai didi

scala - 需要帮助以函数式编程风格重构此 Scala 方法

转载 作者:行者123 更新时间:2023-12-05 01:16:27 25 4
gpt4 key购买 nike

我有这个 scala 方法可以根据一些参数构建一个 map :

def foo(name: Option[String], age: Option[Int], hasChilds: Option[Boolean], 
childs: Option[List[Map[String, Any]]]): Map[String,Any] = {

var m = Map[String, Any]()

if (!name.isEmpty) m += ("name" -> name.get)
if (!age.isEmpty) m += ("age" -> age.get)
if (!hasChilds.isEmpty) m += ("hasChilds" -> hasChilds.get)
if (!childs.isEmpty) m += ("childs" -> childs.get)

m
}

我想知道是否有一种方法可以将代码重构为更函数式的风格?

在这种情况下是否可以取消使用 var

最佳答案

一种方法包括不可变 Map 的扁平化,就像这样,

def foo(name: Option[String], 
age: Option[Int],
hasChilds: Option[Boolean],
childs: Option[List[Map[String, Any]]]): Map[String,Any] = {

Map( ("name" -> name),
("age" -> age),
("hasChilds" -> hasChilds),
("childs" -> childs)).collect { case(a,Some(b)) => (a,b) }
}

关于scala - 需要帮助以函数式编程风格重构此 Scala 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com