scala - isEmpty 为空集返回 false

标签 scala

在这段代码中

    def findQuestionCreatedCount(transaction:DistributedTransaction,userId:UUID,tagSet:Set[String]):Future[List[(String,Int)]]={
        logger.trace(s"will find questions created portfolio for ${userId} and tagSet ${tagSet}. tagSet empty ${tagSet.isEmpty}")
        if(tagSet.isEmpty == false) { //set has data
      ...
}

我看到 print 会发现 questions created portfolio for 3455c2b9-37f2-4373-9dcd-9e71b43e8c3d 和 tagSet Set()。 tagSet 空假

为什么 tagSet 是 Set() 而它的空值为 false?这不应该是真的吗?

最佳答案

可能集合中有一个空字符串""所以打印的时候不可见,例如考虑

scala> Set("").toString
val res0: String = Set()

scala> Set("").isEmpty
val res1: Boolean = false

你可以确认是否是这样

tagSet.contains("")

作为旁注,请考虑 stringOf 如何打印它

scala> scala.runtime.ScalaRunTime.stringOf(Set(""))
val res0: String = Set("")

还有 PPrint将打印带有可见引号的字符串,例如

println(Set(""))
pprint.pprintln(Set(""))
println("")
pprint.pprintln("")

输出

Set()
Set("")

""

关于scala - isEmpty 为空集返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63086493/

相关文章:

scala - 在对象而非类上定义时,方法是尾部递归

scala - 无法在 scala 上初始化类异常(可能是 squeryl bug)

scala - IntelliJ IDEA 中 Play 2 框架支持的损坏解决方案

scala - 为什么 Scala Futures 一次只运行 2 个?

scala - 如何使用Scala IDE在Netbeans中设置Play Framework 2.0

scala - Scala Apache Spark中DStream的输出内容

scala - 如果满足条件,则将元素与列表中的下一个连接起来

scala - 命令式与功能式——理解冯·诺依曼瓶颈

Scala Actor : doesn't receive messages

scala - 如何在光滑的同一查询中选择最大值,最小值