小编ttt*_*ttt的帖子

ScalaTest断言和匹配器

我在Scala Play项目中使用了ScalaTest。但是我在这里有一个问题,什么时候使用普通的assert(xxx === yyy)以及什么时候使用ScalaTest匹配器xxx should be yyy。

就我个人而言,我更喜欢使用assert,因为它既简单又干净。也可以利用ScalaTest的TypedCheckTrippleEquals支持,但匹配器则不能。

对于匹配器,到目前为止,我只发现匹配器可以做的一件事,但不能断言,这是Array(1, 2) should equal (Array(1, 2))成功的。

不太确定推荐哪个,匹配器还有其他东西可以做得更多吗?否则很高兴使用断言。

scala matcher scalatest

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

Spring 启动验证注释不适用于 Kotlin

我为 Kotlin 获得了一个简单的数据类

data class Person(val name: String, @get: Min(18) val age: Int)
Run Code Online (Sandbox Code Playgroud)

我实际上从一个 CSV 文件构建了这个类,我使用 apache CSV 解析器读取了 CSV。即使我有一些age字段小于 18 的数据,测试仍然没有通过。

看起来这个注释不适用于 Kotlin?

spring kotlin spring-boot

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

Scala 2.12组合Future和Either(有偏见的版本)

我有两个方法,两个都返回Future [Either [String,T]],并希望将它们链接在一起以完成工作.我正在使用Scala 2.12现在两者都是正确的偏见.

例如,

如果函数没有返回Future和Either组合,我可以简单地执行以下操作以获得理解.

def convert(a, b) = ???
def callA(): Future[A] = ???
def callB(a: A): Future[B] = ???

def chain: Future[C] = for {
  a <- callA
  b <- callB(a)
} yield convert(a, b)
Run Code Online (Sandbox Code Playgroud)

但现在我想用以下语法使用Either捕获错误,并传播到最终结果.实现这一目标的最佳方法是什么?还应该使用callB还是callB1?

def convert(a, b): Future[Either[String, C]] = ???
def callA(): Future[Either[String, A]] = ???
def callB(a: A): Future[Either[String, B]] = ??? or 
def callB1(eithera: Either[String, A]): Future[Either[String, B]] = ???
Run Code Online (Sandbox Code Playgroud)

我知道使用cat变换monad可以简化这一点.欢迎给我使用标准库和猫的解决方案.

scala

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

使用Intellij IDE运行Scala Dotty项目

我使用Dotty模板创建了一个基本的Scala Dotty项目,并将该项目导入Intellij IDE。

当我使用sbt命令行时,一切正常。

当我尝试在Intellij IDE中构建或运行它时,出现以下错误:

Error:scalac: Multiple 'scala-library*.jar' files (scala-library-0.9.0-RC1.jar, scala-library-2.12.6.jar) in Scala compiler classpath in Scala SDK sbt: ch.epfl.lamp:dotty-library_0.9:0.9.0-RC1:jar

任何想法如何解决这个问题?

scala intellij-idea dotty

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

Kotlin 警告:访问构造函数中的非最终属性

我有一些以下代码并收到变量警告,producer该警告是accessing non-final property in constructor

class KafkaService {

  val producer: KafkaProducer<String, String>

  init {
    val props = Properties()
    props[ProducerConfig.BOOTSTRAP_SERVERS_CONFIG] = "127.0.0.1:9092"
    props[ProducerConfig.CLIENT_ID_CONFIG] = "DemoProducer"
    props[ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG] = StringSerializer::class.java.name
    props[ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG] = StringSerializer::class.java.name

    producer = KafkaProducer(props)
  }

  fun sendToKafka(topic: String, message: String) {
    val producerRecord: ProducerRecord<String?, String> = ProducerRecord(topic, null, message)
    producer.send(producerRecord)
  }
}
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?

kotlin

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

Java 8获取连续数量列表的功能方式

例如,我有一个整数列表,如 List(1,2,3,4,5,6,7)

我想在Java 8中获得所有结合3个数字的更多功能,以学习Java 8.(我知道如何以命令的方式完成它)

因此上面的结果可以是列表列表:

List(List(1,2,3), List(2,3,4), List(3,4,5), List(4,5,6), List(5,6,7))
Run Code Online (Sandbox Code Playgroud)

谢谢

java functional-programming java-8

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

Spring Kafka 幂等生产者配置

对于原生的 Java Kafka 客户端,有一个叫做 Kafka 的配置,enable.idempotence我们可以设置true为启用幂等生产者。

但是,对于 Spring Kafka,我在KafkaProperties课堂上找不到类似的幂等性。

所以我想知道,如果我在我的 Spring Kafka 配置文件中手动设置,这个属性会生效还是 Spring 会完全忽略 Spring Kafka 的这个配置?

apache-kafka spring-kafka

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

Play 应用程序中使用的 SBT 覆盖“排除”

我在 Play 应用程序中使用了 sbt-scoverage。

我使用以下配置来排除反向和路由生成的文件。

coverageExcludedPackages := ";Reverse.;Routes.;"
Run Code Online (Sandbox Code Playgroud)

但是,这只能排除生成的反向 scala 文件,而不能排除 Routes 文件。即使我使用以下脚本,它也会做同样的事情

coverageExcludedPackages := ";Routes.*;"
Run Code Online (Sandbox Code Playgroud)

任何人都知道正确的正则表达式应该是什么?

在此处输入图片说明

scala playframework-2.0 scoverage

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

ScalaTest Matchers与MustMatchers的区别

似乎最新版本的ScalaTest我们有两个匹配器Matchers(之前是ShouldMatchers)和MustMatchers.

这两者之间真正的区别是什么?团队可以选择那种风格还是?

另外,shouldBe和之间的任何区别should be

scala matcher scalatest

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

Scala集合选择元素,直到第一个满足要求

例如,我有跟随Scala列表,我想获得一个子列表,直到有一个要求可以满足.

val list = Seq(1,2,3,4,5,5,4,1,2,5)
Run Code Online (Sandbox Code Playgroud)

要求是数字是5,所以我希望结果如下:

Seq(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

目前我使用Scala集合indexWhere并splitAt返回:

list.splitAt(list.indexWhere(x => x == 5))

(Seq(1,2,3,4), Seq(5,5,4,1,2,5))
Run Code Online (Sandbox Code Playgroud)

我不确定有更好的方法来实现相同的更好的Scala集合的方法,我没有意识到?

scala

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