getOrElse默认为不同的types
有一个问题,我只是想从这个JsValue
返回一个空string,而不是返回0,如果没有发现值。 基本上我想要如下:
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse("")
我这样做主要是因为我使用Apache POI来build立一个Excel工作表,并不希望零作为默认情况下,当没有任何数据。 但要使用.setCellValue(cellValue)
它不能是一个Any
types,这就是这给了我。
我试过了
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cellValue = "" } cell.setCellValue(cellValue)
但是这给了我更改cellValue
到String
types的问题。 也试过这个
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cell.setCellValue("") } else cell.setCellValue(cellValue)
但这给了我一个问题,我重载方法.setCellValue
与替代品。 我习惯了这个工作,因为我来自Java背景,不知道为什么会失败。
如果有一个简单的解决scheme,我仍然得到斯卡拉的吊so,请耐心等待。
一个想法是在调用getOrElse
之前使用map
将Option[Float]
转换为Option[String]
:
val cellValue = (x \ "name" \ "date").asOpt[Float] .map(_.toString) .getOrElse("")
以上返回一个String
。
cell.setValue(cellValue)