据我所知,当您运行sbt可执行文件时,它将在当前目录结构(build.sbt或build scala文件)中查找您的构建配置。有没有一种方法可以为sbt可执行文件指定替代位置,以查找build.sbt或build scala文件?还有没有办法类似地指定工作目录?
例如,我可以从任何目录运行sbt,但可以指定一个命令行参数来指示我要运行哪个build.sbt文件以及工作目录应该在哪里吗?
就像是:
sbt -b /some/dir1/with/build.sbt -w /tmp/sbt/working/dir
Run Code Online (Sandbox Code Playgroud)
我想通过命令行在build.sbt文件之外执行此操作。
我正在尝试使用Scalaz EitherT和scala.concurrent.Future.当试图在for-comprehension中使用它时:
import scalaz._
import Scalaz._
val et1:EitherT[Future, String, Int] = EitherT(Future.successful(1.right))
val et2:EitherT[Future, String, String] = EitherT(Future.successful("done".right))
val r:EitherT[Future, String, String] = for {
a <- et1
b <- et2
} yield (s"$a $b")
Run Code Online (Sandbox Code Playgroud)
我得到以下缺少的Functor和Monad实例错误:
could not find implicit value for parameter F: scalaz.Functor[scala.concurrent.Future]
b <- et2
^
could not find implicit value for parameter F: scalaz.Monad[scala.concurrent.Future]
a <- et1
Run Code Online (Sandbox Code Playgroud)
scalaz是否定义了Functor和Monad for Future的实例?如果没有提供这些实例的其他库或我是否需要编写它们?
鉴于以下内容:
trait Fruit
class Apple extends Fruit
class Orange extends Fruit
case class Crate[T](value:T)
def p(c:Crate[Fruit]) { }
val cra = Crate(new Apple)
val cro = Crate(new Orange)
Run Code Online (Sandbox Code Playgroud)
由于Crate是不变的,我不能做以下(如预期的那样):
scala> val fruit:Crate[Fruit] = cra
<console>:10: error: type mismatch;
found : Crate[Apple]
required: Crate[Fruit]
val fruit:Crate[Fruit] = cra
^
scala> val fruit:Crate[Fruit] = cro
<console>:10: error: type mismatch;
found : Crate[Orange]
required: Crate[Fruit]
val fruit:Crate[Fruit] = cro
scala> p(cra)
<console>:12: error: type mismatch;
found : Crate[Apple]
required: Crate[Fruit]
p(cra)
^
scala> …Run Code Online (Sandbox Code Playgroud) 鉴于:
case class Person(name:String = "Bob", age:Int = 20)
Run Code Online (Sandbox Code Playgroud)
如何在提供年龄时接受名称的默认值?
例如.我可以做这个:
Person() -> Person("Bob", 20)
Person("Jim") -> Person("Jim", 20)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点:
Person(,35) -> Person("Bob", 35)
Run Code Online (Sandbox Code Playgroud)