Scala谓词

use*_*867 8 scala

我是Scala的新手,我正在试图弄清楚谓词是什么以及使用它们的正确方法.我在网上找到的信息对我来说不是很清楚,或者它假设先前有关谓词的知识.有人可以解释它们是什么,也许可以展示一些如何在Scala中使用它们的例子吗?

Bri*_*ian 13

谓词是一个返回a的函数Boolean.

例如,要检查整数是否均匀,我们可以定义函数isEven.

scala> def isEven(i: Int) = i % 2 == 0
isEven: (i: Int)Boolean
Run Code Online (Sandbox Code Playgroud)

它表现得像你期望的那样.

scala> isEven(2)
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)

所以,你可以将它传递给一个函数,就像filter这个函数返回一个布尔值.这种类型的签名是p: (A) ? Boolean)其中p很短的谓语.

scala> List(1,2,3,4,5,6,7,8,9,10).filter(isEven)
res2: List[Int] = List(2, 4, 6, 8, 10)
Run Code Online (Sandbox Code Playgroud)

查看斯卡拉学校的一些好读物.