在这段代码中
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
...
}
Run Code Online (Sandbox Code Playgroud)
我看到印刷品 will find questions created portfolio for 3455c2b9-37f2-4373-9dcd-9e71b43e8c3d and tagSet Set(). tagSet empty false
为什么 tagSet 的值为Set()空false?不应该是真的吗?
可能""在集合内有一个空字符串,因此在打印时不可见,例如考虑
scala> Set("").toString
val res0: String = Set()
scala> Set("").isEmpty
val res1: Boolean = false
Run Code Online (Sandbox Code Playgroud)
你可以确认是否是这样
tagSet.contains("")
Run Code Online (Sandbox Code Playgroud)
作为旁注,请考虑如何stringOf打印
scala> scala.runtime.ScalaRunTime.stringOf(Set(""))
val res0: String = Set("")
Run Code Online (Sandbox Code Playgroud)
此外PPrint将打印字符串有包围引号可见,例如
println(Set(""))
pprint.pprintln(Set(""))
println("")
pprint.pprintln("")
Run Code Online (Sandbox Code Playgroud)
产出
Set()
Set("")
""
Run Code Online (Sandbox Code Playgroud)