d的常与不变

,我不修改数据,不变,不能改.
要理解,常/不变/可变,可理解为不变/可变的基,而后两个(不变/可变)为子类.他们可隐式转为(基类).他们相互间不能转换.,则不变/可变都可安全传给它.
可变,则不变/常都不能传给它.
不能传递给不变.因为可能为可变数据.即使引用自身不修改,但可能外部修改引用.
一般,是不能下转的.
可变引用是唯一,且立即离开该域时,可转为不变,在从纯函数返回可变引用时,可行

MyData createData() pure {//纯,不会存储在全局
    MyData result; // N.B.: 可变
    return result;
    // 唯一可变引用,离开域.
}
	// OK: 函数为纯且数据引用唯一
	immutable MyData data = createData();

数据不包含间接,值型时.不变到可变,这是在造副本.何时用常/不变?
局部变量:常/不变都一样.
函数参数总是用,除非要存储不变数据.更通用.
有人,喜欢in,说文档更多,用-preview=in时为常域,附加额外检查参数(引用)泄露问题.

posted @   zjh6  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示