gpt4 book ai didi

scala - 理解 Scala 的下划线和星号魔法

转载 作者:行者123 更新时间:2023-12-04 20:55:39 34 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What does `:_*` (colon underscore star) do in Scala?

(4 个回答)


4年前关闭。




我正在阅读和练习 Scala,我发现了这个 blog .

阅读关于 的部分组合谓词 我看到这段代码

def complement[A](predicate: A => Boolean) = (a: A) => !predicate(a)

def any[A](predicates: (A => Boolean)*): A => Boolean =
a => predicates.exists(pred => pred(a))

def none[A](predicates: (A => Boolean)*) = complement(any(predicates: _*))

def every[A](predicates: (A => Boolean)*) = none(predicates.view.map(complement(_)): _*)

我有python背景,想了解下划线和星号的含义,单独或一起使用时,理解起来很奇怪,特别是 定义。

最佳答案

SomeExpression*表示“0 个或多个元素的序列”
_可用于指定“我们不需要命名的参数”
none的参数是“包含0个或更多元素的谓词序列”,“谓词”是一个函数,它采用A并返回 Boolean .
any的参数是数组,所以传入的值必须转成数组,由_*完成
every的参数是一个数组,它的名字并不重要,因为只有一个。可以传递给complement_

关于scala - 理解 Scala 的下划线和星号魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033768/

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