`* x`和`x *`之间有什么区别吗?

时间:2013-10-14 19:45:37

标签: rascal

我在一些演示代码中发现,使用了*xx*。有时,星号也用于类型,例如*int xs。在帮助中,仅记录了模式Var*。在模式变量之前或之后放置星形是否有区别?

1 个答案:

答案 0 :(得分:2)

好问题。答案是肯定和否:

  • 是:不推荐使用post-fix *,因为它会在表达方面的某些奇怪的上下文中触发语法歧义,并使用post-fix传递闭包。这种情况不会发生在模式中,但为了保持一致性,我们希望前缀*表示模式中的“splat”和表达式中的“拼接”,作为双重运算符,并删除后修复*避免混淆。
  • 否:当应用于模式中的变量时,它们将具有相同的语义。

因此,请尽可能使用前缀+和前缀*,以避免将来从语言中移除后缀*+时出现升级问题。< / p>