d的@安全
为什么不?给定:
int fun(string s) pure nothrow;
签名,可假定s
为域
,因为无逃逸
通道,返回值无指针
,纯
函数不能访问全局变量
,无其它赋值参数.
而签名为
int fun(string s) pure;
时,可赋值s
给异常
,如何避免/检测
它?
域推导
需要100%
,pure nothrow
不会破坏,只有抛
异常的pure
函数,才会失去免费
的域推导
.
给用户加任意
限制外,完全禁止pure throw
导致严格破坏超集.
只有在不纯
函数中抓异常时,才会打印异常的跟踪栈
.此时,副作用在,不使抛异常的函数(应该不纯,却未不纯)
不纯的地方.
纯
函数中也可抓
异常,抓块
中处理异常,与返回而不是抛
异常是一样的.
还有个问题:仍可赋值串
为非异常
可抛,并抛出.如果函数实现是@safe
,编译器会因为自动加域
而错误地避免了抛异常(应抛未抛
).考虑了它,即禁止断定
按消息用s
.允许则更差,可能断言成功
后访问过期
内存.
这是讨厌的疏忽.我希望不必完全取消基于scope
推导的pure
.由于每个程序只抛一次错误,因此可以
使断言程序消息串
为域
,这样想要
回溯时强制复制,但抛自定义可抛
类时,很难强制.
:可按返回值
建模异常.这是严格的局部重写.因此,与写入传入指针
内存相比,并未违反纯度
.
它们可返回
到比调用函数
更高域
.将破坏调用者
帧中栈内存
.@safe
禁止它.它
指的是通过可抛
逃逸的而不是从纯函数中抛出
的推导域参数
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现