什么是谓词?

Mac*_*iek 64 language-agnostic

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

aeh*_*lke 49

谓词的定义可以在各种来源(例如此处)在线找到,它是:

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

参考:软件测试.马修海登

  • 这个答案只是部分正确.谓词更具体.这个定义就像是说"藏书家"的定义是读书的人.当藏书家这个词提供的细节远不止于此. (3认同)
  • @blesh你能详细说明具体是什么吗? (3认同)
  • 我打算进行编辑,但不完全确定如何措辞。答案中的谷歌图书参考不再有效。 (3认同)

Jac*_*esB 38

声明是真还是假.在编程中,它通常是一个为某些输入返回布尔值的函数.

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

javascript中的示例:

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

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

  • 是的,但由于谓词可能依赖于变量,因此将其视为一种函数可能更为自然. (2认同)

Ben*_*esh 18

谓词不仅仅是一个评估为真或假的表达式,还有更多.术语"谓词"用于表示确定某事是真还是假的表达式.或者换句话说,它会进行断言并根据它返回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;
}
Run Code Online (Sandbox Code Playgroud)

我理解我在这里所说的纯粹是语义上的差异,但这个问题是关于什么的呢?语义?


BCS*_*BCS 5

在非编程方面;一个问题。通常是一个带有占位符的一般性问题(比如itthem),可以询问很多事情。

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

  • 更具体地说,这是一个是或否的问题。 (2认同)