如何在 ReScript 中编写 short local open?
How to write short local open in ReScript?
这在 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 中没有发现任何关于删除的提及。我错过了吗?语法是否已更改,或者是否已删除且未在文档中提及?
正如@Yawar 在评论中指出的那样,在撰写本文时不支持这种简写形式,但可能会在未来的某个时候支持(请参阅 https://github.com/rescript-lang/syntax/issues/2 进行讨论)。
为了让遇到此问题的人省去点击次数,解决方法是使用本地范围重写它并在该范围内打开模块:
let testFn = who => {
open Js
log("Hello " ++ who ++ "!")
}
这在 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 中没有发现任何关于删除的提及。我错过了吗?语法是否已更改,或者是否已删除且未在文档中提及?
正如@Yawar 在评论中指出的那样,在撰写本文时不支持这种简写形式,但可能会在未来的某个时候支持(请参阅 https://github.com/rescript-lang/syntax/issues/2 进行讨论)。
为了让遇到此问题的人省去点击次数,解决方法是使用本地范围重写它并在该范围内打开模块:
let testFn = who => {
open Js
log("Hello " ++ who ++ "!")
}