我正在研究一些 C 和 TCL 库,它们使用 addin ap 的约定到变量名的末尾来引用布尔值,即
set is_registered_p 0
# do stuff
if { $is_registered_p } {
#do stuff
}
我在多个文件和多个来源中发现了这一点,所以我认为它必须是某种约定。
我正在研究一些 C 和 TCL 库,它们使用 addin ap 的约定到变量名的末尾来引用布尔值,即
set is_registered_p 0
# do stuff
if { $is_registered_p } {
#do stuff
}
我在多个文件和多个来源中发现了这一点,所以我认为它必须是某种约定。
最可能的情况是它代表“<b> Predicate ”(即,可以评估以产生布尔值的条件),但它不是大多数 Tcl 程序员中特别常见的约定。
如果有人使用该约定,您可能希望看到它带有变量和命令的名称;在前一种情况下,它们将保存布尔值,在后一种情况下,它们将在执行时返回布尔值。
看起来添加p
到名称的末尾是谓词的常见 LISP命名约定,这与您显示的用途一致。
谓词是一个函数,它测试涉及其参数的某些条件,如果条件为假,则返回 nil,如果条件为真,则返回一些非 nil 值。可以将谓词视为产生布尔值,其中 nil 代表假的,其他任何东西都代表真。
按照惯例,谓词的名称通常以字母 p 结尾(代表“谓词”)。