変数datePurchased
のアイテムがありますが、これにはnullを指定できます。購入日に基づいて、ラベルを生成します。 datePurchasedがnullであるかどうかをチェックすると、elseブランチでもnullをチェックする必要があります。スマートキャストは不可能だと言われています。他の場合はKotlinがnullを2回確認します
if (datePurchased == null) {
""
} else {
if (datePurchased.isToday()) {//error here
}
}
when {
datePurchased == null -> {
}
datePurchased.isToday() -> {//smart cast bla bla mutable bla bla
datePurchased?.isToday() -> {//expected Boolean, got Boolean?
datePurchased?.isToday()?:false -> {//all good, but does not look nice, since datePurchased can't be null here
}
else -> {
}
}
[スマートキャストが不可能であるようなシナリオを処理する最良の方法]の可能な複製(http://stackoverflow.com/questions/39246249/best-way-to-handle-such-scenario-where-smart-キャストが可能です) – miensol
@miensolだから、私のelseブランチを '?let'で"ラップする "べきであると提案していますか? –
はい。あなたはこれを行うことができます: 'datePurchased?.let {if(it.isToday())//何か}?:" "' – marstran