You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中基于别名Set的元素过滤及谓词判定疑问

理解谓词函数 p(e) 的判断逻辑

首先咱们先梳理下你代码里的核心定义:

  • type Set = Int => Boolean:这里的Set本质是一个接收整数、返回布尔值的函数,它的作用就是判断某个整数是否属于这个“集合”——比如你写的belowNegFive(10)返回false,就是因为10不满足“小于-5”的条件。

你的filter函数定义是:

def filter(s: Set, p: Int => Boolean): Set = (e: Int) => s(e) && p(e)

现在来解答你的问题:为什么p(e)能表示整数e满足谓词p?

原因其实很直白:

  • 这里的p本身就是Int => Boolean类型的函数,也就是咱们常说的“谓词函数”——它的唯一职责就是接收一个整数,返回这个整数是否符合某个预设条件(比如“是偶数”“大于100”等等)。
  • 当你调用p(e)时,就是把整数e传入这个谓词函数,函数返回的Boolean值直接就代表了e是否满足p定义的规则。

举个具体例子帮你落地理解:
假设我们定义一个谓词p,用来判断整数是否是偶数:

val isEven: Int => Boolean = (i) => i % 2 == 0

当你调用isEven(4)时,返回true,说明4满足“是偶数”的条件;调用isEven(5)返回false,说明5不满足。这就是p(e)的核心作用——通过函数调用的结果,直接判断e是否符合p的规则。

回到你的filter函数,它返回的新Set逻辑非常清晰:一个整数e属于这个子集,当且仅当e原本属于集合s(s(e)为true),同时e满足谓词p的条件(p(e)为true),完全符合子集过滤的预期逻辑。

内容的提问来源于stack exchange,提问作者kaileena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:24:09