首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我们可以在dart中的索引中更改最终列表的值,而不能更改其他类型的最终变量?

为什么我们可以在dart中的索引中更改最终列表的值,而不能更改其他类型的最终变量?
EN

Stack Overflow用户
提问于 2022-05-23 03:37:52
回答 1查看 34关注 0票数 0

例如,当我们将最终字符串值赋值给变量时:

代码语言:javascript
运行
复制
final String name = "john";
name = "patrick" //error: the final variable name can only be set once

但是,我们可以在索引处更改值。

代码语言:javascript
运行
复制
final List<String> listOfNames = ["bob", "steve", "john"];
liftOfNames[2] = "patrick"; //this is allowed
listOfNames = ["jhonny", "jim", "jack"]; //this isn't allowed(reassigning)

因此,不允许重新分配最终变量,但允许在索引处更改最终列表的值?

EN

回答 1

Stack Overflow用户

发布于 2022-05-23 05:52:19

是。一点儿没错。没有选项(在Dart中,像C++这样的语言可以这样做)来标记方法是否更改实例。因此,调用list.lengthlist.clear(),甚至调用list.lengthlist.length = 5没有语法上的区别。dart编译器无法区分这是否是一个变异调用。

因此,将某些东西标记为final确实只会保护它不被重新分配。在您的示例中,列表变量永远不能被分配到另一个列表中。它可以被操纵以保存不同的值,但它总是相同的实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72343028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档