4

示例计算器中

REBOL [title: "Calculator"]
do %r3-gui.r3
stylize [
    btn: button [
        facets: [init-size: 50x50]
        actors: [on-action:[set-face f join get-face f get-face face]]
    ]
]
view [
    hgroup [
        f: field return
        btn "1"  btn "2"  btn "3"  btn " + "  return
        btn "4"  btn "5"  btn "6"  btn " - "  return
        btn "7"  btn "8"  btn "9"  btn " * "  return
        btn "0"  btn "."  btn " / "   btn "=" on-action [
            attempt [set-face f form do get-face f]
        ]
    ]
]

...生成的程序不会(因为 Rebol 传统上不会)评估具有比 + 更高优先级的 * 的数学表达式。例如2 + 3 * 4,给出 20 而不是 14。

我以为我在某处读到过 Rebol3 包含一个新函数,它可以更多地评估数学表达式,就像人们在几乎所有其他上下文中使用的方式一样。真的吗?如果是这样,是否可以在不进行大量更改的情况下使用上述代码?

4

2 回答 2

4

我不确定 Rebol 3 中是否有根据形式优先级评估运算符的特定函数(我很高兴得到纠正),尽管在野外有人尝试实现这样的函数。如果您要找到这样的功能,您只需在按钮块中将评估器从 更改dodo-expressiondo-expression所述功能在哪里) 。on-action"="

于 2014-10-22T18:34:22.040 回答
1

谁说用“正常顺序”来评价应该是最好的?一些“聪明人”曾经想出这个,因为他无法处理错误,不幸的是,他比其他人更强大,并威胁说如果他们不做他做过的事情,就会锤他们的脑袋,所以直到今天我们都被教导乘法先于尽管他们被放入了订单,但过度添加。叛军叛军!;)

于 2014-10-22T19:37:12.017 回答