我在IntelliJ中使用静态编程语言。
我有一段简短的代码
val myLayoutView = v.findViewById(R.id.layout) as LinearLayout
var myImageView = v.findViewById(R.id.image) as ImageView
val myLabelView =v.findViewById(R.id.label) as TextView
var app = getItem(position) as AppObject
myLabelView.text = app.appName
myImageView.drawable = app.appImage
为什么在这个世界上它告诉我:
myImageView.drawable = app.appImage
关于提到的变量,“Val不能重新分配”任何val实例都已完全更改为var。
为了确保这一点,我已经在其他类中更改了同名的变量,甚至还将类中的每个变量都更改为var,我仍然会遇到这个错误。
这与可拉伸的性质有关吗?
我错过了什么或做错了什么来得到这个错误,我如何修复它?
非常感谢。
您误解了该声明中var的含义。
“var myImageView”表示可以更改“var myImageView”的值。换句话说,您可以为其指定不同的ImageView。它不适用于内容。
更好的例子:
val list = mutableListOf(1, 2, 3)
var list2 = listOf(1, 2, 3)
list.add(5) <----- Yes
list2.add(5) <----- No
list = mutableListOf(3, 4, 5) <----- No
list2 = mutableListOf(3, 4, 5) <----- Yes
“列表”定义为val,因此您无法替换它。但由于它是一个可变列表,您可以更改其内容
“list2”被定义为一个var,因此您可以用另一个var替换它。但是,它是一个不可变的列表,因此其内容不能更改。
根据Kotlin Properties and Fields文档,val属性是带有getter但没有setter的属性。var属性同时具有getter和setter。
如果查看ImageView,它有一个getDrawable()方法,但没有setDrawable()方法。Kotlin自动将Java类中的getter转换为属性,这就是为什么可以使用myImageView。完全可以绘制。但是,由于没有setDrawable()方法,因此这是一个val属性。
您需要使用setImageDrawable()
等方法来设置图像。
我试图在kotlin中编写一个函数,但我无法将值重新分配给函数参数,它说val不能重新分配。 当我试图分配一个值url=主页. it给我错误val不能重新分配,我是新的kotlin,我不明白是什么问题,很少帮助将不胜感激。
我为数据类创建了一个var扩展属性,如下所示: 但是,当我尝试将“Val”重新分配给此行中的新值时,编译器会抱怨“Val无法重新分配”: 我真的不明白为什么会这样??我有一个“var”位图属性而不是“val”,那么问题是什么?更重要的是,什么是解决方案或替代方案?
我有这两个函数,我试图修改元素。其中一个编译,另一个说“val不能重新分配”。以下函数有什么区别?为什么一个编译,另一个不编译? 编译的那个 那个说 无法重新分配Val
在这里,在有趣的交换中,我试图用b1更改a1的值,但它显示“val不能被重新分配编译时错误”。如果我不能这样改变,那怎么可能呢? 注意:这只是一个示例,了解为什么我不能像在Java中那样重新分配局部变量。
问题内容: 我只是无法解决这个问题。 我正在使用Linode 1G RAM基本计划。试图通过Composer安装软件包,但并没有让我这么做。我的内存限制在PHP.ini上设置为“ -1” 我还能做些什么来安装此软件吗? 问题答案: 有点老了,但是以防万一有新人正在寻找解决方案,更新您的PHP版本可以解决此问题。 另外,您应该提交composer.lock文件,并在资源占用较少的生产环境中进行com