小编jsa*_*ata的帖子

类型级编程中的协方差

我正在尝试创建类似于Scala库中的类型的Tuple,只使用:+方法通过添加N + 1st值将元组扩展为元组 - 这样我将能够递归地构造元组:

class Test {
  abstract class Tuple {
    //protected type Next[_] <: Tuple
    //def :+[T](p: T): Next[T]
  }

  case class Tuple0() extends Tuple {
    protected type Next[T] = Tuple1[T]
    def :+[T](p: T): Next[T] = Tuple1(p)
  }

  case class Tuple1[+T1](p1: T1) extends Tuple {
    protected type Next[T] = Tuple2[T1, T]
    def :+[T](p: T): Next[T] = Tuple2(p1, p)
  }

  case class Tuple2[+T1, +T2](p1: T1, p2: T2) extends Tuple {
    protected type Next[-T] = Nothing
    def :+[T](p: T): Next[T] …
Run Code Online (Sandbox Code Playgroud)

generics types scala

9
推荐指数
2
解决办法
675
查看次数

如何在scala中削减for-comprehension short(突破它)?

我有一段代码,代码如下:

val e2 = for (e <- elements if condition(expensiveFunction(e))) yield {
            expensiveFunction(e)
         }
Run Code Online (Sandbox Code Playgroud)

条件对于少数元素是正确的,然后对所有剩余的元素变为假.

不幸的是,这不起作用(即使我忽略性能)因为我elements是一个无限的迭代器.

有没有办法在for-comprehension中使用"break",这样当某个条件成立时它会停止产生元素?否则,计算我的scala-idiomatic方法是e2什么?

scala break infinite-sequence for-comprehension

9
推荐指数
2
解决办法
5332
查看次数

Solr DataImport:管理不同环境的配置(开发/暂存/生产)

SolR DataImportHandler的配置文件包含针对数据库运行的SQL查询,如何将结果列映射到SolR文档字段,当然还包括连接到数据库所需的参数.

在我们的项目中,数据库连接参数(特别是数据库密码)从环境变为环境,这迫使我们为每个环境维护整个配置XML文件的略微不同的副本.

有没有办法将数据库连接参数(特别是密码)与SQL语句和声明分开配置,因此每个配置都保持一次且仅一次?

solr dataimporthandler

6
推荐指数
2
解决办法
1517
查看次数

玩!2 scala:在控制器代码中向表单添加错误

我对输入数据进行了一些验证,我真的更愿意在控制器代码中处理,因为:

  1. 它仅适用于非常特定的情况,因此verifying表单定义中的函数混乱会降低代码内聚力.
  2. 它产生附属结果,我需要在控制器的其他地方使用.

什么是一个干净的方式来生成一个新的,Form就像刚刚绑定在success分支中的附加(字段或一般)错误消息Form.fold

为了说明,我想要像Form.withError我在这里调用的(不存在的)方法:

val form= myForm.bindFromRequest
form.fold(
  errors => BadRequest(view(errors))
  {
    case(data, button) =>
      button match {
        case Some("save") =>
          val r= costlyFunction(data)
          if (r.isOk) {
            doSomethingWith(r)
            Ok(...)
          }
          else {
            val f= form.withError("my custom error")
            BadRequest(view(f))
          }
        case ...
      }
  }
Run Code Online (Sandbox Code Playgroud)

validation scala playframework-2.0

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