1

我从zio.dev设置了简单的 ZIO 应用程序。

val myAppLogic =
    for {
      _    <- putStrLn("Hello! What is your name?")
      name <- getStrLn
      _    <- putStrLn(s"Hello, ${name}, welcome to ZIO!")
    } yield ()

在 Intellij 中/与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"
  )
}

我错过了什么?

4

1 回答 1

4

Mill 默认以客户端-服务器模式运行。结果之一是,构建任务不能使用输入流。

您给定的示例需要从流程标准输入中读取。因此,您必须明确告诉 mill 在与--interactive(或 short -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 读取并打印问候语。

于 2019-08-22T20:02:39.140 回答