什么是谓词?

作为一个编码爱好者,我缺乏一些基本的知识。过去几天我一直在读一些东西,“谓语”这个词不断出现。我非常希望你能解释一下这个问题。

27326 次浏览

谓词的定义是:

计算结果为 TRUE 或 FALSE 的逻辑表达式,通常用于指示代码中的执行路径。

参考资料: 软件测试作者: Mathew Hayden

在编程中,谓词是一个函数,它对某些输入返回 true 或 false。

最常见的(我猜)是在高阶函数的语境中使用。例如,filter是许多语言中的一个函数,它接受 断言名单作为参数,并返回列表中谓词为 true 的项。

Javascript 中的例子:

function lessThanTen(x) { return x < 10; }
[1,7,15,22].filter(lessThanTen) --> [1,7]

函数 lessThanTen是这里的谓词,它应用于列表中的每个项。

导致布尔 1值的基本评估。它通常引用表示此类型计算的函数或对象。

1: boolean 使用松散,不一定指的是声明为 boolboolean的变量。

还有一些与数据库相关的谓词:

Http://www.tizag.com/sqltutorial/sqlpredicates.php

我不知道我说的上下文是否正确,但是在 C # 中有一个 Predicate类,它本质上是一个委托,给定一个条目,决定对象是否满足一组条件。

例如,下面的 Predicate<int>类型的方法可用于选择所有大于5的整数:

public bool MyPredicate(int x)
{
return x > 5;
}

我不知道如何翻译成更一般的情况,但这是一个开始。更多信息,点击这里

在非编程术语中;。通常是一个一般性的问题与位置持有人(如 他们) ,可以问很多事情。

  • 是红色的吗?
  • 是狗吗?
  • 是否为 他们所有?

返回布尔值的函数。谓词在对 从数据结构中选择值的子集进行函数式编程和面向对象编程时使用很多,特别是在列表和其他集合中。您将在 Haskell 和 Smalltalk 的标准库中找到大量示例。

谓词不仅仅是计算结果为 true 或 false 的表达式,它还有更多的含义。术语“谓词”用来表示一个表达式,即 决定了是否为真或假。或者换句话说,它进行断言并根据该断言返回 true 或 false。

例如(在 C # 中) :

/*this is a predicate, as it's sole purpose is to make some
assertion about something.*/
bool IsNameBob(string name)
{
return name == "Bob";
}


/*Whereas this is not a predicate, as it's performing an action
then evaluating to true if it succeeds. */
bool DoSomethingCool() {
try
{
ImDoingSomethingCool();
}
catch
{
return false;
}
return true;
}

我知道我在这里提到的纯粹是语义上的不同,但这就是这个问题的意义所在,对吗?语义学?

首先,让我们看看一本普通的字典,看看它是如何描述谓词的:

牛津美语词典(1980) :

句子的一部分,如“生命是短暂的”中的“是短暂的”

这里还有一个句子: “约翰很高。”谓词是“ is high”。正如你看到它修改或描述的主题,另一个类似于 predicate的术语是 adjective。本质上它是一个修饰语。

IBM 的技术 词汇表提供了几个定义,但最适合的是这个定义:

用作筛选器一部分的表达式,由数据项、运算符和值组成

下面是一个使用 SQL 的示例:

SELECT name
FROM tableA
WHERE name = "john";

这段代码中的谓词应该是 name = "john"。它包含 IBM 定义的所有组件,也符合谓词的常规定义。主语是 name,谓语是 name = "john"

C + + 入门级第五级(10.3.1) :

谓词是一个可以调用的表达式,它返回一个可以用作条件的值。

同样来自 定义术语章节:

谓词 : 返回可转换为 bool的类型的函数。

关于谓词,我发现最好的 S.O. 答案是 重复的问题。

总而言之,在自然语言中,谓语是句子中描述主语的部分。

简很高

简是主语,is tall是谓语。

在计算机科学中,我们对断言一个主题的事实不感兴趣,而是对某事是真是假进行测试。

jane.isTall();

这里 jane 是一个带有谓词方法的对象,该方法返回 true 或 false。