Я установил аммонит, используя это: http://www.lihaoyi.com/Ammonite/#Ammonite-Shell
~ / .ammonite /pref.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)
Ammonite Repl - версия 0.7.7 с Scala 2.11.8 Java 1.8.0_101
Я попробовал очень простой скрипт аммонита:
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 dir = ls! Pwd)
2) Что означает «директория рекурсивного значения требует типа»?
3) Что означает сингл «@» в файле Pref.sc?