【发布时间】:2017-10-20 13:25:00
【问题描述】:
我已经实现了一个函数,我曾经将它传递给 anko 的 applyRecursively。
在这个函数里面,我想加一个marginEnd,就是view在一个LinearLayout里面,所以我写了如下代码:
when(view.layoutParams) {
is LinearLayout.LayoutParams -> {
view.layoutParams.marginEnd = view.resources.getDimensionPixelSize(R.dimen.min_spacing)
}
}
我收到 view.layoutParams 是一个可以更改的可变属性的错误。所以我不得不强制演员:
when(view.layoutParams) {
is LinearLayout.LayoutParams -> {
(view.layoutParams as LinearLayout.LayoutParams).marginEnd = view.resources.getDimensionPixelSize(R.dimen.min_spacing)
}
}
查看stackoverflow,我看到Kotlin不会智能转换可以为空的变量,但是view.layoutParams不能为空,那么为什么智能转换不能推断类型?
【问题讨论】:
-
嗯,因为它是可变的,正如错误消息所说的那样?可空性与智能转换无关。