Dart元数据和符号

Dart元数据和符号,dart,polymorphism,printf,variadic-functions,stdio,Dart,Polymorphism,Printf,Variadic Functions,Stdio,我正在创建一个库来模拟C的stdio库。正在工作,但函数(其中2/3目前实际上是Function对象)看起来很糟糕。我很难弄清楚元数据,符号和镜像。据我所知,它们非常有用,可能会满足我的需要。因此,3个问题: instancemirror可以像指针一样使用吗 它们中的任何一个可以以类似于这些宏的方式使用吗 在C(#定义MAC/#定义F#u MAC(a,b)) 是否有一种干净的方法来实现var_args*和多态函数**?我希望编者能真正意识到这是一种功能 请包括解释和示例(我很难理解,所以如果

我正在创建一个库来模拟C的stdio库。正在工作,但函数(其中2/3目前实际上是
Function
对象)看起来很糟糕。我很难弄清楚
元数据
符号
镜像
。据我所知,它们非常有用,可能会满足我的需要。因此,3个问题:

  • instancemirror
    可以像指针一样使用吗
  • 它们中的任何一个可以以类似于这些宏的方式使用吗 在C
    #定义MAC
    /
    #定义F#u MAC(a,b)
  • 是否有一种干净的方法来实现
    var_args
    *和多态函数**?我希望编者能真正意识到这是一种功能
请包括解释和示例(我很难理解,所以如果你不包括示例,你可能会浪费时间)

*我已经知道这一点:,我希望编辑器能够将其识别为函数而不是对象

**我目前正在使用
动态
参数,并根据运行时传入的类型生成行为,但这虽然有效,但从外观和文档上看都很可怕

理想情况下,我希望我的文档输出与此类似

//var_args hack
int printf(字符串格式,…)/C
//实际上看起来不错
int vprintf(字符串格式,列表参数)//C
//var_args hack
int fprintf(动态流,字符串格式,…)/C
//var_args hack
int-fnprintf(动态流,int-maxsize,字符串格式,…)/C
//实际上看起来不错
int vfprintf(动态流,字符串格式,列表参数)//C
//实际上看起来不错
int vfnprintf(动态流,int maxsize,字符串格式,列表参数)//C
//--第一个参数可选,因此多态是必需的,+var_args--
int sprintf(StringBuffer流,字符串格式,…)/C
字符串sprintf(字符串格式,…)
//--第一个参数可选,因此多态是必需的,+var_args--
int-snprintf(StringBuffer流,int-maxsize,字符串格式,…)/C
字符串snprintf(字符串格式,int-maxsize,…)
//--第一个参数可选,因此多态性是必要的--
int-vsprintf(StringBuffer流,字符串格式,列表参数)//C
字符串vsprintf(字符串格式,列表参数)
//--第一个参数可选,因此多态性是必要的--
int-vsnprintf(StringBuffer-stream,int-maxsize,字符串格式,列表参数)//C
字符串vsnprintf(字符串格式,int-maxsize,列表参数)
//--第一个参数可选,因此多态性是必要的--
int strftime(StringBuffer buffer,int maxsize,String格式,DateTime日期)//C
字符串strftime(int-maxsize、字符串格式、日期时间)
int strftime(StringBuffer缓冲区、字符串格式、日期时间)
字符串strftime(字符串格式,日期时间日期)
//需要指针或引用之类的东西
String vsprintf(字符串缓冲区、字符串格式、列表参数)//C

编辑:


对不起,我被叫走了,没有时间回答我的问题。为了:

  • 我的意思是这样的:
String f(String*arg0、int*arg1、double*arg2、bool*arg3)
目前我正在做:

字符串arg0=。。。;
int arg1=。。。;
双arg2=。。。;
布尔arg3=。。。;
列表args=[arg0,arg1,arg2,arg3];
f1(args);
arg0=args[0];
arg1=args[1];
arg2=args[2];
arg3=args[3];
列表args0=[arg0];
列表args1=[arg1];
列表args2=[arg2];
列表args3=[arg3];
f2(args0、args1、args2、args3);
arg0=args0[0];
arg1=args1[0];
arg2=args2[0];
arg3=args3[0];
我希望找到更好的方法

  • 我希望能够做到这一点:
#定义私有:
#定义公共:
#定义枚举类
这样我就可以:

enum E
{
静态int值_0=0;
静态整数值_1=1;
静态int值_2=2;
静态整数值_3=3;
int值;
}
C类
{
私人:
国际私人0;
国际私人1;
国际私人2;
国际私人3;
公众:
国际公共0;
国际公共1;
国际公共2;
国际公共3;
}
它本质上是为了评论(只是好奇)

  • 是的,我知道这很有效,我只是想知道这是不是一个更好的方法
附:有关于镜子或符号的好教程吗?

  • InstanceMirror可以像指针一样使用吗
导入'dart:math'作为数学;
导入“dart:MIRRS”作为mirr;
void main(){
math.rectangler=新的math.Rectangle(10,10,20,20);
镜像实例镜像im=镜像反射(r);
var r2=im.reflectee;
打印('r左上:${r.topLeft},r2左上:${r2.topLeft}');
}
  • 它们中的任何一个能否以类似于C中的宏的方式使用(#define MAC/#define F#u MAC(a,b))
你能再详细说明一下你想完成什么吗

  • 是否有一种干净的方法来实现var_args*和多态函数**?我希望编者能真正意识到这是一种功能

我认为您链接的问题/答案包含了有关此主题的所有信息

对不起,我被叫走了,没有时间回答我的问题。