【发布时间】:2017-12-30 19:15:14
【问题描述】:
来自 Ruby 世界,我立刻明白为什么 Crystal 选择不实现 for 方法。但后来我惊讶地发现 Crystal 确实 为宏实现了 for 方法。我更惊讶地发现宏不允许枚举(.each 等)语法(即{% ["one", "two", "three"].each do |value| %} 不是有效的宏语法)。
这种语法差异有逻辑上的原因吗?答案可能很简单~“因为开发人员认为宏语法看起来像 x,而非宏语法看起来像 y”,但我猜测还有更多内容(任意语法不一致似乎是一个缺陷)。
谢谢!
【问题讨论】:
-
我猜宏语法有点像 Liquid 之类的模板引擎。
-
@JohannesMüller 如果他们只是模仿现有的模板语言,他们不应该使用 ERB 吗? (这对我来说似乎很明显,但也许并不明显?)也许他们尝试了常规 Crystal 语法之类的东西,但很难阅读。我很好奇这个思维过程是否记录在任何地方。
-
我不确定它是否在最初的提案中发挥了作用,但 Crystal 的集成 ECR 模板使用了类似 ERB 的语法。对宏使用相同的语法会令人困惑,并且无法在 ECR 文件中使用宏(这不应该是一个很好的做法,但这是可能的)。
-
你应该打开一个关于改变这个的问题。我会支持你提出的语法。就回答你的历史问题而言,这是玛纳斯团队的问题。
标签: crystal-lang