小编spa*_*rkr的帖子

Travis CI 内联 Bash 脚本

我有以下 Travis CI yml 文件片段:

script:
  - if [ $TRAVIS_BRANCH == "master" ]; then
      sbt clean coverage test coverageReport docker:publishLocal;
    fi
  - if [ $TRAVIS_BRANCH == "/^develop-.*$/" ]; then
      sbt clean coverage test coverageReport;
    fi
Run Code Online (Sandbox Code Playgroud)

它有点工作,但我无法理解它产生的日志。这有点误导。这是来自构建服务器的日志:

[success] Total time: 22 s, completed Aug 8, 2017 5:29:28 PM

The command "if [ $TRAVIS_BRANCH == "master" ]; then sbt clean coverage test coverageReport docker:publishLocal; fi" exited with 0.
0.00s

$ if [ $TRAVIS_BRANCH == "/^develop-.*$/" ]; then sbt clean coverage test coverageReport; …
Run Code Online (Sandbox Code Playgroud)

travis-ci

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

Akka Streams源流上的mapConcat运算符

我正在阅读Akka流的文档,我遇到了mapConcat运算符,就像flatMap一样(至少在概念层面).

这是一个简单的例子:

scala> val src = Source.fromFuture(Future.successful(1 to 10))
src: akka.stream.scaladsl.Source[scala.collection.immutable.Range.Inclusive,akka.NotUsed] = Source(SourceShape(FutureSource.out(51943878)))
Run Code Online (Sandbox Code Playgroud)

我期待源的类型是:

akka.stream.scaladsl.Source[Future[scala.collection.immutable.Range.Inclusive],akka.NotUsed]
Run Code Online (Sandbox Code Playgroud)

为什么不是这样?

我对每行的类型的理解如下所示:

Source
  .fromFuture(Future.successful(1 to 10)) // Source[Future[Int]]
  .mapConcat(identity) // Source[Int]
  .runForeach(println)
Run Code Online (Sandbox Code Playgroud)

但上面例子中的Source类型并不是我想象的那样!

scala akka-stream

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

在Scala中处理和引发异常

我有以下实现:

  val dateFormats = Seq("dd/MM/yyyy", "dd.MM.yyyy")
  implicit def dateTimeCSVConverter: CsvFieldReader[DateTime] = (s: String) => Try {
    val elem = dateFormats.map {
      format =>
        try {
          Some(DateTimeFormat.forPattern(format).parseDateTime(s))
        } catch {
          case _: IllegalArgumentException =>
            None
        }
    }.collectFirst {
      case e if e.isDefined => e.get
    }
    if (elem.isDefined)
      elem.get
    else
      throw new IllegalArgumentException(s"Unable to parse DateTime $s")
  }
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在做的是,我在Seq上运行并尝试解析不同格式的DateTime。然后,我收集成功的第一个,如果不成功,则抛出异常。

我对代码不完全满意。有没有更好的方法可以简化它?我需要将异常消息传递给调用者。

scala

4
推荐指数
2
解决办法
89
查看次数

如何在 Rust 中使用 Chrono 库查找时差

我有一个 Rust 程序,我想用开始时间和结束时间做一些简单的基准测试!

use chrono::{NaiveTime, Utc};

fn main() {
    let start_time: NaiveTime = Utc::now().time();
    let end_time: NaiveTime = Utc::now().time();
    println!("Total time taken to run is {}", end_time - start_time);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印为:

Total time taken to run is PT520.532696S
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,我想是 520 秒,但是我如何将其转换为分钟?有没有更好的办法?

time rust

4
推荐指数
2
解决办法
1526
查看次数

在 Play Framework 视图模板中包含纯 HTML 页面

有没有办法在 Play 框架的视图模板中包含纯 html 页面?我有一个场景,其中有一个通用视图模板,并且在模板正文中,我想包含某些静态 html 页面。我知道我可以在某个模板中包含其他模板,但我不确定是否可以包含纯 html 页面?

html playframework

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

Scala模式匹配Java枚举类型

我有一个Java枚举类型,有一些字符串,我想模式匹配.这是我到目前为止所做的:

public enum MyEnum {
  YEAR, MONTH;
}
Run Code Online (Sandbox Code Playgroud)

在我的scala函数中,我执行以下操作:

timePeriod.toUpperCase match {
  case MyEnum.YEAR.name => doSomething
  case MyEnum.MONTH.name => doSomething
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到以下错误:

stable identifier required, but YEAR.name found
Run Code Online (Sandbox Code Playgroud)

我没有足够的信息来理解错误的根本原因.有任何想法吗?

enums scala

3
推荐指数
2
解决办法
1959
查看次数

Scala中的工厂设计模式与案例类

我正在尝试使用随播对象上提供的apply方法在Scala中实现工厂设计模式.我有以下方法.

sealed trait MyType {
  def param: String
}

case class TypeA(param: String) extends MyType
case class TypeB(param: String, anotherParam: String) extends MyType 

object MyType {
  def apply(param: String): TypeA = ???
  def apply(param, anotherParam: String): TypeB = ???
}
Run Code Online (Sandbox Code Playgroud)

现在,我如何在创建TypeA或的实例时强制上述特征的调用者通过伴随对象进行操作TypeB

scala companion-object

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

Scala类型

我有一个自定义类型定义如下:

type MyType = (String, String)
Run Code Online (Sandbox Code Playgroud)

当我使用这种类型时,我总是要经历我讨厌的元组编号.我当然可以执行以下操作并解压缩内部内容,如下所示:

val (str1, str2) = myType
Run Code Online (Sandbox Code Playgroud)

我可以为这种类型创建一个伴侣对象,并且有两个方法可以给出元组中的第一个和第二个元素吗?我想宁愿做以下事情:

myType.str1会给我第一个元素,myType.str2会给我第二个元素.

scala

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

Scala 延迟 val 缓存

在以下示例中:

def maybeTwice2(b: Boolean, i: => Int) = {
  lazy val j = i
  if (b) j+j else 0
}
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时,为什么 hi 没有打印两次:

maybeTwice2(true, { println("hi"); 1+41 })
Run Code Online (Sandbox Code Playgroud)

这个例子实际上来自“Scala 中的函数式编程”一书,给出的原因是为什么“嗨”没有被打印两次对我来说不够令人信服。所以只是想在这里问这个!

scala thunk

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

Scala递归类型

我只是试图了解Scala的类型系统.我偶然发现了一个看起来像这样的代码:

trait A extends Something {
  type X <: XLike

  trait XLike { this: X =>
    ....
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)

这意味着什么?在哪种情况下我想要像这样编码?我知道我是嵌套类型,但嵌套类型的优点是什么,并使用它来引用嵌套类型?

types scala

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