什么是谓词?

时间:2009-08-27 22:10:00

标签: language-agnostic

作为业余爱好者,我缺乏一些基本知识。在过去的几天里,我一直在读一些东西,“谓词”这个词不断出现。我非常感谢有关这个问题的解释。

12 个答案:

答案 0 :(得分:46)

谓词的定义可以在here等各种来源在线找到:

  

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

参考:Software Testing. By Mathew Hayden

答案 1 :(得分:34)

一个真或假的陈述。在编程中,它通常是一个为某些输入返回布尔值的函数。

最常见的(我猜)在高阶函数的上下文中使用。例如。 filter是许多语言中的函数,它将谓词列表作为参数,并返回谓词为true的列表中的项目。 / p>

javascript中的示例:

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

函数lessThanTen是这里的谓词,它应用于列表中的每个项目。当然,布尔表达式可以用作谓词代替函数,例如filter(true)将返回完整列表,filter(false)为空列表。

答案 2 :(得分:17)

谓词不仅仅是一个计算结果为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;
}

我理解我在这里所说的纯粹是语义上的差异,但这就是这个问题的正确性吗?语义?

答案 3 :(得分:4)

导致布尔 1 值的基本评估。它通常指代表示此类评估的函数或对象。

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

答案 4 :(得分:4)

在非编程方面; 一个问题。通常情况下,占位符的一般问题(如 it 他们)可以被问到许多事情。

  • 红色?
  • 是一只狗?
  • 拥有

答案 5 :(得分:3)

首先让我们看一下常规词典,看看谓词的含义是什么:

牛津美国词典(1980):

  <磷>氮。句子的一部分,用于说明语法主题,“生命短暂”中的“短”

这是另一句话:“约翰很高。”谓词“很高”。如您所见,它会修改或描述主题,另一个与predicate类似的术语是adjective。从本质上讲,它是一个修饰语。

IBM的技术glossary提供了几个定义,但最适合的是这一个:

  

用作过滤器一部分的表达式,由数据项,运算符和值

组成

以下是使用SQL的示例:

SELECT name
FROM tableA
WHERE name = "john";

此代码中的谓词为name = "john"。它包含IBM定义的所有组件,也适用于谓词的常规定义。主题为name,谓词为name = "john"

答案 6 :(得分:2)

返回布尔值的函数。谓词在功能和面向对象编程中被广泛使用,以从数据结构中选择值的子集,尤其是列表和其他集合。您可以在Haskell和Smalltalk的标准库中找到大量示例。

答案 7 :(得分:2)

考虑概念的语法含义来推断编程概念可能是有用的。

From wikipedia

  

在传统语法中,谓词是   a的两个主要部分之一   句子(另一个是主语,   谓词修饰的)。为了   简单的句子“John [is yellow],”   约翰充当主题,而且是   黄色充当谓词,a   随后对主题的描述   以动词为首。

     

在当前的语言语义中,a   谓词是一个可以表达的表达式   真实的东西。就这样   表达“是黄色的”或“就像是   西兰花“对那些东西都是真的   黄色或像西兰花,   分别。这个概念很紧密   与谓词的概念有关   在形式逻辑中,包括更多   表达式比前者更像,   例如,名词和某些类型的   形容词。

用逻辑术语来说:

  

返回逻辑的运算符   无论是真还是假。

来自MathWorld

答案 8 :(得分:1)

我不知道我是否在正确的语境中说话,但C#中有一个Predicate类,它本质上是一个委托,给定一个项目,确定该对象是否符合一个集合标准。

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

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

我不确定这是如何转化为更一般的情况,但这是一个开始。有关详细信息,请click here

答案 9 :(得分:1)

来自 C ++ Primer 5th (第10.3.1节):

  

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

也在“ 定义的术语”部分中:

  

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

答案 10 :(得分:0)

也有些相关,有与数据库相关的谓词:

http://www.tizag.com/sqlTutorial/sqlpredicates.php

答案 11 :(得分:0)

最好的S.O.我发现,关于谓词的答案在duplicate question.

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

  

简高个

简是主题,is tall是谓语。

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

jane.isTall();

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