为什么用磨坊运行 ZIO 应用程序不起作用



我从 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 并打印问候语。

相关内容

  • 没有找到相关文章

最新更新