小编ssa*_*anj的帖子

有没有一种方法可以指定sbt通过命令行寻找构建配置的备用位置?

据我所知,当您运行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文件之外执行此操作。

scala sbt

5
推荐指数
1
解决办法
562
查看次数

使用scala.concurrent.Future与EitherT时缺少Functor和Monad实例

我正在尝试使用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的实例?如果没有提供这些实例的其他库或我是否需要编写它们?

scala monad-transformers scalaz7

4
推荐指数
1
解决办法
2697
查看次数

混淆了方差

鉴于以下内容:

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)

scala variance

3
推荐指数
1
解决办法
212
查看次数

提供其余的时,访问第一个默认参数值

鉴于:

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)

scala default-value

1
推荐指数
1
解决办法
196
查看次数