1

我正在研究一些 C 和 TCL 库,它们使用 addin ap 的约定到变量名的末尾来引用布尔值,即

set is_registered_p 0
# do stuff
if { $is_registered_p } { 
    #do stuff
}

我在多个文件和多个来源中发现了这一点,所以我认为它必须是某种约定。

4

4 回答 4

6

最可能的情况是它代表“<b> Predicate ”(即,可以评估以产生布尔值的条件),但它不是大多数 Tcl 程序员中特别常见的约定。

如果有人使用该约定,您可能希望看到它带有变量和命令的名称;在前一种情况下,它们将保存布尔值,在后一种情况下,它们将在执行时返回布尔值。

于 2013-06-07T12:50:39.337 回答
5

我的猜测是predicate

LISP 中还有一个约定是使用尾随 P 表示谓词函数。

于 2013-06-07T12:50:53.917 回答
5

看起来添加p到名称的末尾是谓词的常见 LISP命名约定,这与您显示的用途一致。

于 2013-06-07T12:54:59.047 回答
4

谓词是一个函数,它测试涉及其参数的某些条件,如果条件为假,则返回 nil,如果条件为真,则返回一些非 nil 值。可以将谓词视为产生布尔值,其中 nil 代表假的,其他任何东西都代表真。

按照惯例,谓词的名称通常以字母 p 结尾(代表“谓词”)。

于 2013-06-07T12:50:31.160 回答