d的引用与右值
原文
可用临时值
,但不应为了以后使用而存储
它们.此时,如果ref
参数也是"域"
,应该可传递右值
.见下文.
是的,虽然仍是幕后
指针,但"ref"
避免了指针语法.
然而,在D中有了变化:也可通过"in"
参数神奇
的按引用
传递右值
.目前需要-preview=in
编译器开关,使"in"
参数表示"const scope"
:
参考
import std.stdio;
struct S {
string id;
}
void foo(in S s) {
writeln("foo received ", s.id);
}
void main() {
auto s = S("lvalue");
foo(s);
foo(S("rvalue"));
}
//打印
foo received lvalue
foo received rvalue
可添加复制
构造器到S
,来查看"in"
是按副本还是按值
.
可用-preview=rvaluerefparam
编译.它应该是默认的.我一直在用它.
struct vec2{ float x; float y;}
void pass(const ref vec2 pos)
{}
void main()
{
pass( vec2(1,1) );
}
//用dub:
"dflags": [
"-preview=rvaluerefparam",
],
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现