一个计算加法的代码, 根据输出的两个数, 输出它们的和及这两个加数.
-
这段代码大量使用了一种语法糖——圆括号转义, 它有两种用法:
- 一种是将括号内的字符串根据预定的规则转化为特殊对象, 比如
(add)转译为内置加法函数,(stdin)和(stdout)转义为标准输入流和标准输出流; - 另一种是将圆括号内部的整数转义为三进制表达式, 如第一行的
(-1)表示将内置加法函数委托在F地址上. 这种用法主要是为了便于阅读.
- 一种是将括号内的字符串根据预定的规则转化为特殊对象, 比如
-
从上往下依次为:
- 将内置加法函数委托在
-1 = F地址上(委托的过程实际是包装的过程). - 从标准输入流依次读取
2个 Tryte 并写入以T地址为开头的一段内存. - 运行
-1 = F地址上委托的加法函数, 这个函数形如N = T + TN. - 从
N地址开始读取3个 Tryte 并依次写入标准输出流.
- 将内置加法函数委托在
5 {(-1), (add)}
7 {(stdin), T, (2)}
4 {(-1)}
7 {N, (stdout), (3)}一个简易循环的例子. 通过你的输入来决定是否继续循环.
- 从上往下依次为:
- 构建一个代码树并委托于
F地址, 内容为从T地址读取1个 Tryte 并写入标准输出流. - 构建一个代码树并委托于
N地址. 首先从标准输入流读取1个 Tryte 并写入T地址; 然后, 根据T地址的值, 如果是正值则继续执行N地址的委托 (相当于continue), 如果是负值则执行F地址的委托 (输出T地址的值然后终止), 如果是N则直接终止.
- 构建一个代码树并委托于
5 {
F,
{7 {T, (stdout), (1)}}
}
5 {
N,
{
7 {(stdin), T, (1)} # 循环体
6 {
T2, # 循环条件
{4 {N}},
{4 {F}}
}
}
}
4 {N}