我从 zio.dev 设置了简单的ZIO应用程序。
val myAppLogic =
for {
_ <- putStrLn("Hello! What is your name?")
name <- getStrLn
_ <- putStrLn(s"Hello, ${name}, welcome to ZIO!")
} yield ()
当与Intellij一起运行时,它按预期工作。
但是,用磨坊运行它并没有。
nbszmbp012:zio-scala-camunda-bot mpa$ mill server.run
[27/37] server.compile
[info] Compiling 1 Scala source to /Users/mpa/dev/Github/pme123/zio-scala-camunda-bot/out/server/compile/dest/classes ...
[info] Done compiling.
[37/37] server.run
Hello! What is your name?
Peter
不执行name <- getStrLn
。
这是build.sc
import mill._, scalalib._
object server extends ScalaModule {
def scalaVersion = "2.12.8"
def ivyDeps = Agg(
ivy"dev.zio::zio:1.0.0-RC10-1",
ivy"com.bot4s::telegram-core:4.3.0-RC1"
)
}
我错过了什么吗?
默认情况下,Mill 在客户端-服务器模式下运行。其中一个后果是,生成任务不能使用输入流。
您给出的示例需要从过程标准输入中读取。因此,您必须明确告诉 mill 以交互模式运行--interactive
(或短-i
(。
$ mill -i server.run
[27/37] server.compile
[info] Compiling 1 Scala source to /tmp/zio-q/out/server/compile/dest/classes ...
[info] Done compiling.
[37/37] server.run
Hello! What is your name?
Peter
Hello, Peter, welcome to ZIO!
当使用附加-i
(在任务名称之前(调用时,ZIO 应用程序会正确读取 STDIN 并打印问候语。