我想知道以下字段的用途:
- node
- do
- digression
- disable
- goto
- next
- transitions
- set
- exit
node call_reason{ do { digression disable sayHi; goto next; } transitions { next: goto how_are_you; }}
回答:
我想,你问这个问题是因为你对语法有点困惑,我会尽量解释清楚。
节点和转换
DashaScript 是用于描述自动对话的语言。基本上,任何对话脚本都由以下部分组成:
在某种意义上,脚本化的对话可以被视为一个图。在这种情况下,节点和转换可以分别解释为图的顶点和边。
因此,node
和transition
定义了你的对话脚本的结构。
每个node
都有一个do
子部分,你可以在其中指定在这个特定node
中要执行的动作和指令。
此外,node
可能有一个transitions
子部分,用于指定从当前状态切换到另一个状态的条件。
每个事件转换(如事件转换和定时器转换)在这个部分中指定的语法如下:<transition_name>: goto <node_name> on <switching_condition>
。
即时转换(如你的代码中使用的)没有条件:<transition_name>: goto <node_name>
。要执行这样的转换,必须在当前节点的do
部分使用goto
指令调用它。
此外,还有一些特殊节点,可以从任何状态访问。这些节点称为分支(digressions)。(参见 分支文档)。它们用于在对话中快速反应并返回到对话的主分支。为了控制分支,我们有启用/禁用它们的机制(参见 分支控制文档)。
所以,在你的示例中,名为call_reason
的node
有一个do
部分,你在其中disable
了一个分支节点,然后执行了一个名为next
的即时转换。
上面提到的DashaScript语言的所有实体都在程序结构文档中描述。我建议你查看一下,因为还有更多你可能需要了解的重要实体。
设置
set
是用于为某个变量赋值的指令。示例:
node some_node{ do { var some_variable: number = 1; set some_variable = 2; // 现在some_variable的值为2 }}
退出
exit
是中断对话的指令。