我使用以下代码安装了氨水:http://www.lihaoyi.com/Ammonite/#Ammonite-Shell
~/..ammonite/predef.sc是安装后的样子。
interp.load.ivy("com.lihaoyi" %% "ammonite-shell" % ammonite.Constants.version)
@
val shellSession = ammonite.shell.ShellSession()
import shellSession._
import ammonite.shell.PPrints._
import ammonite.ops._
import ammonite.shell._
ammonite.shell.Configure(repl, wd)用Scala2.11.8JAVA 1.8.0_101,氨水Repl为0.7.7
我尝试了非常简单的氨化脚本:
ammtest.sc是
/*
This is ammonite script file.
*/
import ammonite._
import ammonite.ops._
import ammonite.ops.ImplicitWd._
println("Hello World")
import java.util._
val date = new Date()
println(date)
val dir = ls!
println(dir)当我编译它时,我会得到以下错误:
$ amm ammtest.sc
Compiling ammtest.sc
ammtest.sc:17: recursive value dir needs type
println(dir)
^
ammtest.sc:17: type mismatch;
found : Unit
required: ammonite.ops.Path
println(dir)
^
Compilation Failed另一方面,当我复制/粘贴相同的代码(一开始没有导入)到氨化REPL时:
println("Hello World")
import java.util._
val date = new Date()
println(date)
val dir = ls!
println(dir)它运行正常,没有任何错误。
1)我是否需要将更多的东西导入脚本中,以使它在REPL中运行,或者它有什么问题?(我知道脚本运行良好,如果更改,例如,val = ls!( pwd )
2)“递归值dir需要类型”是什么意思?
3) predef.sc中单一的"@“是什么意思?
发布于 2016-10-01 18:23:53
val dir = ls!
println(dir)被视为
val dir = ls.!(println(dir))这就是为什么后缀操作符令人困惑的原因。
您可以添加一个空行以获得预期的含义。
REPL解析是逐行的.
https://stackoverflow.com/questions/39808439
复制相似问题