【问题标题】:How to write short local open in ReScript?如何在 ReScript 中编写简短的本地打开?
【发布时间】:2021-01-27 15:47:43
【问题描述】:

这在 ReasonML 中编译:

let testFn = who => Js.(log("Hello " ++ who ++ "!"));

但不在 ReScript 中:

FAILED: src/test.ast

  Syntax error!
  /xxx/src/test.res:1:25-27

  1 │ let testFn = who => Js.(log("Hello " ++ who ++ "!"));
  2 │

  I'm not sure what to parse here when looking at "(".


  Syntax error!
  /xxx/src/test.res:1:25-27

  1 │ let testFn = who => Js.(log("Hello " ++ who ++ "!"));
  2 │

  consecutive statements on a line must be separated by ';' or a newline

我在official docs 中没有发现任何关于删除的内容。我错过了吗?语法是否已更改,还是已删除且未在文档中提及?

【问题讨论】:

  • ReScript 语法目前不支持:github.com/rescript-lang/syntax/issues/2。这个问题最好在 ReScript 论坛问,因为语法仍在发展中,情况可能会迅速改变。
  • @Yawar 哦,我不知道语言还没完。官方网站上没有警告,文档中的语言版本是 8.2.0...
  • 那是编译器版本。语法版本为0.0.8-dev:github.com/rescript-lang/syntax/blob/…
  • 目前的语言/语法是稳定的,其他一切都将是语法的补充。没有“语法版本”,只有语法所属的编译器版本。我们在编译器中使用 git 标签来表示已发布的语法版本:github.com/rescript-lang/syntax/tags

标签: module rescript


【解决方案1】:

正如@Yawar 在 cmets 中指出的那样,在撰写本文时不支持这种简写,但可能会在未来的某个时候支持(参见 https://github.com/rescript-lang/syntax/issues/2 进行讨论)。

为了给遇到这个问题的人节省一次点击,一种解决方法是使用本地范围重写它并在该范围内打开模块:

let testFn = who => {
  open Js
  log("Hello " ++ who ++ "!")
}

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    相关资源
    最近更新 更多