"blog.toolshed.com"-6ren">
gpt4 book ai didi

scala - 解码以下 Scala 代码

转载 作者:行者123 更新时间:2023-12-04 17:51:01 25 4
gpt4 key购买 nike

在阅读一本关于 Scala 的书时,我偶然发现了以下代码。无法将代码分离为函数、参数、变量。

 val feeds = Map("Andy Hunt"   -> "blog.toolshed.com",  
"Dave Thomas" -> "pragdave.me",
"NFJS" -> "nofluffjuststuff.com/blog")

val fiterName = feeds filter { element =>
val (key, value) = element
(key startsWith "D") && (value contains "pragprog")
}

谁能一步步向我解释代码?

最佳答案

feeds 是一个 Map[String, String],它将一个人映射到一个博客。

然后该映射使用 过滤器 进行迭代,它会尝试过滤任何以大写字母 D 开头且其值包含单词“pragprog”的作者。

当您对 Map 进行过滤时,您会得到一个元组,该元组的第一个元素是键,第二个元素是值。使用圆括号,它看起来像这样:

val filterName = feeds.filter(element => {
val (key, value) = element
key.startsWith("D") && value.contains("pragprog")
})

请注意,过滤器本身是一个 higher order function ,它需要另一个函数作为输入。此函数采用 A 类型的参数,在我们的例子中是一个元组 (String, String),并生成一个 bool 值,指示元素是否匹配条件.在过滤器内部,他们使用了元组解构:

val (key, value) = element    

它采用 Tuple2[String, String] 并调用它的 unapply 方法,允许您通过名称访问元组的组件,而不是通过 ._1_.2

关于scala - 解码以下 Scala 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41851704/

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