在nix repl中输入多行表达式触发语法错误的问题咨询
问题原因
你使用的nix repl默认采用逐行解析逻辑,每输入一行就会立即尝试执行,你拆分输入的多行表达式每一行单独看都语法不完整,自然会抛出对应报错。
解决方法
要输入多行表达式,需要先进入多行编辑模式:
- 输入
:(冒号加空格)后按回车,即可进入多行暂存模式 - 逐行输入你的表达式内容,所有内容输入完成后,单独输一行
.按回车,nix repl就会完整解析你输入的所有内容
正确的执行示例如下:
nix-repl> : nix-repl> rec { nix-repl> a = b.foo; nix-repl> b.foo.bar = 12; nix-repl> } nix-repl> . { a = { bar = 12; }; b = { foo = { bar = 12; }; }; }
如果需要编辑更复杂的表达式,也可以直接输入 :e 唤起系统默认编辑器编写,保存关闭后内容会自动加载到nix repl中执行。
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

