当前位置:网站首页>d初化模板构造器
d初化模板构造器
2022-08-09 01:05:00 【fqbqrr】
struct TestArray(ulong element_n) {
int[element_n] elements;
this(string type)(ulong number) {
pragma(msg, "类型为: " ~ typeof(type).stringof);
}
}
//我想创建它并能够成功地初始化,构造函数的模板参数
void main() {
// 不行
auto val = TestArray!(10, "int")(60);
// 不行
auto val = TestArray!(10).TestArray!("int")(60);
// 不行.
auto val = TestArray!(10).this!("int")(60);
}
//
struct TestArray(ulong element_n, string type) {
int[element_n] elements;
this(ulong number) {
pragma(msg, "类型为: " ~ typeof(type).stringof);//Qth
}
}
struct TestArray(ulong element_n, string type) {
int[element_n] elements;
this(ulong number) {
mixin("alias T = " ~ type ~ ";");
pragma(msg, "类型为: " ~ T.stringof);
}
}
//用T类型
struct TestArray(ulong element_n, T) {
int[element_n] elements;
this(ulong number) {
pragma(msg, "类型为: " ~ T.stringof);
}
}
TestArray!(10, "int") val = TestArray!(10, "int")(100);
//或
TestArray!(10, int) val = TestArray!(10, int)(100);
//我将推荐一个别名以使其更容易:
alias IntTestArray = TestArray!(10, int);
...
IntTestArray val = IntTestArray(100);
struct TestArray(ulong element_n) {
int[element_n] elements;
this(type)(type number)
{
pragma(msg, "类型为: " ~ type.stringof);
}
}
auto val = TestArray!10(ubyte(60));
工厂函数:
TestArray!T testarray(string s, T)(T val) {
... // 依赖
return TestArray!T(...) // 构造器.
}
//或这样:
struct StringAnnotated(string s, T)
{
T val;
}
StringAnnotated!(s, T) annotate(string s, T)(T val)
{
return StringAnnotated!(s, T)(val);
}
struct TestArray(ulong element_n)
{
...
this(T)(T val) if (isInstanceOf!(StringAnnotated, T))
{
...
}
}
// use like
TestArray!10(60.annotate!"int");
用辅助函数:
import std.stdio;
struct TestArray(ulong element_n, string type) {
int[element_n] elements;
mixin(type) member;
pragma(msg, "类型为: ", typeof(member));
this(ulong number) {
writeln("用", number,"构建");
}
}
auto makeTestArray(ulong element_n, string type)(ulong number) {
return TestArray!(element_n, type)(number);
}
void main() {
auto ta = makeTestArray!(10, "int")(60);
}
//用嵌套模板
import std.stdio;
template TestArray(ulong element_n) {
struct TestArrayImpl(Type) {
int[element_n] elements;
this(ulong number) {
pragma(msg, "类型为: ", Type);
writeln("用", number,"构建");
}
}
auto makeFor(string s)(ulong number) {
return TestArrayImpl!(mixin(s))(number);
}
}
void main() {
auto ta = TestArray!10.makeFor!"int"(60);
}
边栏推荐
- 【科研-学习-pytorch】1-框架特性和常见问题类型
- 统一身份管理平台IAM单点登录流程及第三方接口设计方案
- 入门数据库Days6
- Use jdbc to handle MySQL's utf8mb4 character set (transfer)
- 【图像增强】基于Step和Polynomial 滤波实现图像增强附matlab代码
- 「复盘」面试 BAMT 回来整理 398 道高频面试题,助你拿高薪 offer
- 轻量级学习网络--ShuffleNet v1:Group conv的改进与channel shuffle的提出
- 低代码接口开发平台——YesApi(API+数据表单)
- leetcode-45-跳跃游戏 II
- 【科研-学习-pytorch】6-数值计算
猜你喜欢
随机推荐
Transformer前言:self-attention与Multi-Headed Attention的详细理解
JSON basics, transfer JSON data, and introduce four mainstream frameworks, jackson, gson, fastjson, and json-lib!
makefile文件编译
全新Swagger3.0教程,OAS3快速配置指南,实现API接口文档自动化!
js中常用方法总结
面试秘籍 | 软件测试必备的mysql数据库技术
在Ubuntu/Linux环境下使用MySQL:解决com.mysql.jdbc.PacketTooBigException: Packet for query is too large的问题
torch.utils.data.DataLoader
【科研-学习-pytorch】2-线性回归
微信企业号开发之开启回调模式
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)
《Go语言学习:基本变量与类型》
在Windows环境下使用MySQL:自动定时备份
【图像增强】基于Step和Polynomial 滤波实现图像增强附matlab代码
轻量级网络ESPNet系列 空洞卷积简介
4-7 Matplotlib库 箱线图
5-3 Seaborn 分布绘图
论文笔记:SAITS: SELF-ATTENTION-BASED IMPUTATION FOR TIMESERIES
425 Can‘t open data connection for transfer of “/“
MySQL5.7安装教程图解









