当前位置: 首页 > news >正文

无锡做装修网站信息流推广实施策划书

无锡做装修网站,信息流推广实施策划书,删除重装wordpress,wordpress搜索安全原文 因为对编译时执行的i串的兴趣,我一直在考虑搞个通用用例,而不是相关i串的用例. 滑动模板参数 请考虑以下模板: void pluto(string s)() {pragma(msg, s); } void test() {pluto!hello(); }因为s是编译时参数,这编译,而pragma(msg,s) 期望s为编译时值. voi…原文 因为对编译时执行的i串的兴趣,我一直在考虑搞个通用用例,而不是相关i串的用例. 滑动模板参数 请考虑以下模板: void pluto(string s)() {pragma(msg, s); } void test() {pluto!hello(); }因为s是编译时参数,这编译,而pragma(msg,s) 期望s为编译时值. void pluto()(string s) {pragma(msg, s); } void test() {pluto(hello); }这无法编译,因为即使它是内联的,s也是编译时不可访问的运行时参数.在此内联没用,因为内联是在CTFE和分析语义后进行的. 这些示例说明了编译时参数和运行时参数间的区别. 为了说明,生成元素元组: alias AliasSeq(T...) T;及接受元组的函数参数列表: void func(Args...)(Args args) { }但注意,args是运行时参数.表明,它无法用元组拆分参数元组为编译时元组和运行时元组,类似如下: void pluto(Args...)(Args args) {exec!(args[0])(args[1 .. args.length]); }这是DIP1036e遇见的问题.它聪明的是让编译器(因为它不能通过元编程完成)取第一个参数,并用作模板挂名值的编译时参数. 然后,该参数类型,是个把值编码为可编程提取并编译时处理的类型的模板. 尴尬在它只在i串上,而不是通用功能,再加上插入挂名参数到参数列表中,只为了可提取它们的类型. 因此,该提案描述了从运行时的表达式元组创建编译时参数的语言能力. 因为缺乏更好术语,我叫它滑动模板参数. 考虑一个模板函数: void pluto(string s, Args...)(Args args) {pragma(msg, s); } void exec() {pluto!hello(1,2,3); }现在有效.但如下无法编译: pluto(hello,1,2,3);因为没有s参数. 因此,编译器可滑动参数到左侧,而不是发出编译错误,因此把第一个参数移动到编译时参数列表中.然后,调用就会编译. 规则类似: 1.该函数是个带可变运行时参数列表的模板 2.编译时参数是N个值参数序列,加可变类型参数. 3.值参数没有默认值 4.模板调用中未提供编译时参数 5.最左边的N个运行时参数与编译时参数匹配,并从运行时参数列表中删除 6.如果它们匹配,则重写模板实例化来反映这一点 7.然后正常编译 然后,滑动模板可成为一个通用设施.有趣的结果是,它开辟了一类全新的函数,现在可对最左边的参数CTFE计算. 总之,这是个好主意,但建议的语法有点过于特化,受到任意限制,且行为可能是意想不到的,应该选入. 也许可这样做: void pluto(string s, Args...)(enum string x s, Args args){ }也即,可在函数参数列表中使用枚举,且必须默认初化它们.即此参数总是需要有该值. 然后,在编译时计算与枚举参数匹配的参数,并匹配初化器. 我昨天开始研究1036e模板的替代机制.我提到了这一点. 可在调用点传递UDA,并可在模板函数中通过__traits(getAttributes,parameter)访问它. i$ident$(expr)$(ident:format)${1:format} //变为: IExpression(ident) ident, IExpression(expr) expr, IExpression(ident) IFormat(format) ident, IFormat(format) IPosition(1) IPosition.init这将是一个通用语言功能. string username, password; getopt(description(My program)description(Second line)commandsInfo,description(My programs help info)flag(help) flag(h) helpInfo,description(The username to connect with)flag(username) flag(u) username,description(The password to connect with)flag(password) flag(p) password );我已模拟了getopt,唯一额外的模板用法是formattedRead.这是一个通用功能,串插值也可绑定它. 这是个可行的方法.但仍没有格式串(writef). 如果用它来实现插值元组,我会让第一个参数类型是 struct Interpolation {immutable string[] parts; }因此编译器会这样: void foo(Interpolation interp, Args...)(Args args) {...} void main() {string name Steve;int age 42;foo(iHello, $name, I see you are $age years old.);//相当于:foo!(Interpolation([Hello, , name, , I see you are , age, years old.]))(name, age); }按参数出现的顺序传递参数仍有价值.如,这禁止带多个i串的函数.但也许没关系. 另一个有趣的发展是,也可在运行时取串字面数据(喜欢或同意运行时处理串字面数据时): void writeln(Args...)(Interpolation interp, Args args) {assert(interp.parts.length args.length * 2 1);write(interp.parts[0]); //总是是前导串;static foreach(i; 0 .. args.length)write(args[i], interp.parts[(i1)*2]);writeln(); }我不认为这比DIP1036e或DIP1027简单.简单的转换就是简单的转换.当然,编译时传递格式串的混合DIP1027仍不可行. 但会稍微不那么臃肿. 如果该机制是让它越过终点线的原因,我可妥协. 这是可实现和玩的东西吗? 这似乎有可能破坏代码: void foo(int x, Args...)(Args args) { } void foo(Args...)(Args args) { } foo(1, 2, 3); //这叫今天,第二个是所以我会听从蒂蒙的建议,也许确实需要明确选入. -史蒂夫 一个更现实示例: writefln(blah %d, 1)因为writefln(和format)有串模板格式参数版本. 即使选入,仍会决定(或抛歧义错误)来匹配重载. -史蒂夫
http://www.dnsts.com.cn/news/72737.html

相关文章:

  • 电子商城网站建设项目规划书wordpress 火箭加速
  • 网站设计与制作是做什么工作高端室内设计公司
  • 阿坝县建设局网站logo设计及创意说明
  • wordpress模板获取数据哈尔滨网站优化对策
  • 南昌市会做网站有哪几家信用体系建设网站
  • 网站推广方案设计方案WordPress食谱小程序
  • 新人怎么自己做网站建立网站建设
  • 全国二级建造师查询网站2008 iis7添加网站
  • 网站建设都需要哪些书网站策划步骤
  • 网站首页源码苏州正规网站建设概况
  • 西安市网站搭建备案需要网站建设方案书
  • wordpress影视站主题长沙模板网站长沙网站建设
  • 邢台资讯做网站需要考虑seo吗
  • 竹业网站建设旅游网站建设目的
  • 万网 成品网站wordpress cat=
  • 龙岗公司网站建设我想做代理怎么找厂家
  • 能自己做效果图的网站海安做网站的公司
  • 南京网站制作搭建网页设计作业设计意图
  • 自媒体网站大全2021室内设计公司排名
  • 手机网站做多宽的图片微信工作平台开发
  • 大学生创业服务网站建设方案陕西住房城乡建设网站
  • 天津免费建设网站代挂QQ建设网站
  • 网站谷歌地图提交自己可以做微信小程序吗
  • 个人网站可以直接做微信登陆吗chrome浏览器官网入口
  • 松岗做网站哪家便宜南阳网站运营
  • app网页设计网站wordpress+百度云图安装
  • 福田网站优化互联网产品经理
  • 做十个网站怎样查看别人的网站是怎么建设
  • 建设历史文化旅游宣传网站做微商哪个网站比较好
  • 网站制作器提高百度快速排名