About the Constant Function(中文)
DScript 与 JavaScript 的一个关键区别是 DScript 包含常量的概念。常量就是一个声明时没有输入参数的函数。常量有一个特殊的属性:它们只执行一次,此后在所有后续求值中记住其值。
例如,以下代码创建两个名为 Income 和 Age 的常量,然后使用它们为 Qualifies 赋值:
Qualifies:=Income>100000||Age>18&&Income>30000||Age>35
Income:=asknumber("What is your annual income?")
Age:=asknumber("How old are you?")
如果 Age 被定义为变量:
那么即使其结果从未被需要(例如如果 Income 大于 $100,000),这个问题也会被询问。
如果 Age 被定义为函数:
那么在求值 Qualifies 的布尔表达式时,这个问题可能会被询问两次,因为 Age 被使用了两次。
常量同时具有函数和变量的属性。首次请求其值时,它表现得像函数。从那时起,它通过记住第一次的结果而表现得像变量。
由于 JavaScript 没有创建常量的语法,DScript 添加了 Define 运算符(:=)。此运算符可用于创建标准函数以及常量。
参见 Define。
例如,JavaScript 代码:
与 DScript 代码相同:
并且等价于更简洁的 DScript 代码:
JavaScript 的 function 语句需要参数列表(常量没有参数列表),并要求所有语句都括在花括号中(DScript 在只有一条语句时不要求)。在 DScript 编程中,永远不需要使用 function 语句,因为 Define 运算符执行相同的任务,而且通常更易于使用。