什么是谓词?
作为一个业余爱好者,我缺乏一些基础知识。 在过去的几天里,我一直在阅读一些东西,“谓语”这个词不断重现。 我非常感谢关于这个问题的解释。
一个谓词的定义,可以在这里find各种来源,如:
一个逻辑expression式,其值为TRUE或FALSE,通常用于指示代码中的执行path。
参考: 软件testing。 由马修·海登
这个陈述是真的还是假的。 在编程中,它通常是一个函数,它为某些input返回一个布尔值。
最常见的(我猜)在高阶函数的情况下使用。 例如filter
是许多语言中的一个函数,它将谓词和列表作为参数,并返回谓词为true的列表中的项目。
javascript中的示例:
lessThanTen = function(x) { return x < 10; } [1,7,15,22].filter(lessThanTen) --> [1,7]
函数lessThanTen
是这里的谓词,它应用于列表中的每个项目。 当然,布尔expression式可以用作谓词来代替函数,例如filter(true)
将返回完整列表, filter(false)
空列表。
谓词不仅仅是一个expression式,它的计算结果是真或假,还有更多。 术语“谓词”用来指代一个expression式来决定是否是真或假。 或者换句话说,它会作出断言并基于此来返回真或假。
例如(在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; }
我明白我在这里所说的纯粹是语义上的差异,但是这就是这个问题的关键所在吗? 语义?
一个基本的评估结果为一个布尔值1 。 它通常是指代表这种types评估的函数或对象。
1:使用宽松的布尔值,不一定是指bool
或boolean
variables。
在非编程方面; 一个问题 。 一般来说,一个普遍的问题与地方持有人(如它和他们 ),可以被要求许多事情。
- 它是红色的吗?
- 它是一只狗吗?
- 它是由他们拥有的吗?
我不知道我是否在正确的背景下讲话,但是C#中有一个Predicate
类,它基本上是一个委托,它给定一个项目,确定对象是否符合一组标准。
例如,可以使用以下types为Predicate<int>
方法来select大于5的所有整数:
public bool MyPredicate(int x) { return x > 5; }
我不确定这是如何转化为更一般的情况,但这是一个开始。 欲了解更多信息, 请点击这里 。
考虑概念的语法意义来推断编程概念可能是有用的。
从维基百科 :
在传统的语法中,谓语是句子的两个主要部分之一(另一个是谓语修饰的主语)。 对于简单的句子“约翰(是黄色的)”,约翰作为主语,而黄色作为谓语,随后以动词为首的主题的描述。
在当前的语言语义学中,谓词是一个可以是事实的expression。 因此,表述“黄色”或“像西兰花”对于那些黄色或类似西兰花的东西分别是真实的。 这个概念与forms逻辑中谓语的概念密切相关,其中forms逻辑包含了比前者更多的expression,比如名词和某些形容词。
从逻辑上来说:
逻辑运算符返回true或false。
来自MathWorld
首先让我们来看看一个普通的字典,看看它是什么说的:
牛津美国词典(1980):
ñ。 作为一个关于语法主题的句子的一部分,“生命短”中的“短”
这是另一个句子:“约翰很高” 谓词“很高”。 正如你可以看到它修改或描述主题,另一个与predicate
相似的术语是adjective
。 本质上它是一个修饰符。
IBM的技术词汇表提供了几个定义,但最适合的是这一个:
用作filter一部分的expression式,由数据项,运算符和值组成
这里是一个使用SQL的例子:
SELECT name FROM tableA WHERE name = "john";
这个代码中的谓词是name = "john"
。 它具有IBM定义的所有组件,也符合谓词的常规定义。 主题是name
和谓词是name = "john"
。
也有些相关,有数据库相关的谓词:
一个返回布尔值的函数。 谓词在function和面向对象程序devise中被用来从数据结构中select值的子集 ,特别是列表和其他集合。 在Haskell和Smalltalk的标准库中你会find很多的例子。