d的is表达式
考虑普通局部变量:
int foo = 0;
可分析为:
Type_Name Local_Name Operator Initial_Value
考虑is
表达式:
is(typeof(func) Params == __parameters)
这样:
is(Type_Name Local_Name Deconstruction_Pattern)
//后2都是可选的.
类型 | 意思 |
---|---|
is(Type) | 有类型,但省略了本地名称和解构模式.它只关心类型是否存在. |
is(Type:something) | 用: 表明可转为该类型 的析构模式 . |
is(Type==something) | 精确匹配,最易记 |
is(Type Identifier) | 必须存在某种类型,像整 a 一样,名字在型 后.跳过析构 类型 |
is(Type Identifier:something) | 与前: 一样,但可可选本地名 |
is(Type Identifier==something) | 同样 |
文档中还有其他,class
等,大多很简单,可初化标识符
为其他
.看起来,is(A B == C)
像B与C
在比较,但这是在声明变量
.
== C
整个为析构模式
,B
为变量.类型整 a=10
.
is(MyClass Parents == super)
==super
,其为基类
.因此把==
当作匹配析构模式
.更有意义.
static if(is(int[10] == T[N], T, size_t N))
只是,扩展了析构模式
.==
精确比较,T[N]
为声明模型.问题是多数时候
编译器不会告诉你模式格式不正确
,只是不匹配.因而通过静态断言
等来测试.
这样用,可选复杂名:
static if(is(int[10] OriginalType == T[N], T, size_t N))
知道如何分解的时候,就容易搞懂了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现