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

d答复引用等问题

原文
:让ref成为TypeCtor,不是更简单地解决问题吗?
技术上,答案是肯定的,但现实是,答案不仅是否定的,而是:绝对不行.

:虽然使用()是消除两个不同结构歧义的自然方法,但似乎导致问题的唯一情况是,无法在函数类型中表达"按引用返回".

这是开场白.我研究了可表达的各种方式.我确信我曾经写过一篇论坛帖子,询问要提出语法的意见,但现在我再也找不到它了(这让我怀疑记忆力).
一天,我随机想到,使D的类型语法成为语法可能会自然地解决该问题,最后,表明它确实如此.

:使用ref作为TypeCtor:

//返回按引用返回`整`的`函数指针`的函数
ref(int) function(int) makesFPbyRef();
//按引用返回`整`的作为参数类型的`函数指针`
void takesFP(ref(int) function() funcPtr)
//按引用返回`整`的作为引用参数类型的`函数指针`
void takesFP(ref ref(int) function() funcPtr)
//普通变量类型,可以是`NOOP`或语义错误
struct S { ref(int) member; }

:话虽如此,我知道你的建议不仅与ref问题有关,而且是为了使Type语法更好.
它以ref为主要动机.
首先,使ref成为TypeCtor和使其成为类型构造器是有区别的.第一个是仅语法/句法,另一个是语言语义结构.我假设你即两者兼而有之;
将其列为TypeCtor而不实际跟进语义肯定是可能的,但非常令人困惑.

我提议的语法更改仅是添加.建议的弃用完全是可选的,不是使语法工作所必需的.另外,我建议更改语法,而不更改语义.

看看

struct S { ref(int) member; }

你似乎真建议ref是个成熟的类型构造器:与C++一样,他们也有个引用类型构造器,但本质上C++语言和库构造并不与引用工作:引用指针和(逻辑结果)引用数组不是类型.D不需要非组合类型系统.
我想了很久.ref(Type)作为语法结构,没前途.

void takesFP(ref ref(int) function() funcPtr)

类似如下编写的成员函数:

const const(int) f() { ... }

这不好.
:然后,可以为内置元组保留括号.特别是很难正确表达单个类型组成的类型元组.
这根本不是问题.对元组语法的括号,必须按(value,)表示1元元组,因为(value)是个普通式,因此要求尾随逗号也与类型保持一致:(int)int,但(int,)是有int组件的1元元组.

郑重声明:我从一开始就反对元组用括号.括号分组,而不是来构造.我对元组方面的看法是,静态数组看作同构元组(迭代类型相同)的特例,并按异构组件扩展:int[2][int,int]的简写;
[int,string]异构元组.与构建数组一样,这样构建一个元组:[1,"abc"].
内省设计支持使用运行时索引:
[int, immutable int]可访问ref const(int),[int,long]可按值访问,但无ref.


http://www.kler.cn/news/18352.html

相关文章:

  • 【蓝桥杯选拔赛真题56】Scratch画笔涂色 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解
  • OJ练习第101题——柱状图中最大的矩形
  • 数据结构之栈的详解
  • ASP.NET Core Web API用户身份验证
  • 鸿蒙Hi3861学习七-Huawei LiteOS-M(信号量)
  • Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs
  • windows环境安装运行kafka
  • Java EE--多线程(二)
  • Linux命令·netstat
  • electron +VUE 获取本地MAC地址
  • 又一起数据泄露事件五个月内的第二次
  • OpenPCDet系列 | 7.PointPillars模型测试KITTI数据集流程解析
  • 文件压缩与解压性能对比 lzop, gzip
  • CentOS 7 常用的命令,你知道多少?
  • 5.9-5.10学习总结
  • PDN Handover流程介绍
  • Java RSA密钥转换,从RSAPrivateKey得到RSAPublicKey
  • HTML5字体集合的实践经验
  • ( 位运算 ) 268. 丢失的数字 ——【Leetcode每日一题】
  • 当生命里有程序来串门——一个北邮信通大一学生的漫谈
  • Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】
  • 给你安利一款不需要魔法就能免费使用的idea插件Bito-ChatGPT
  • IO-Netty
  • Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)
  • SpringBoot——入门程序的简单介绍
  • wiringPi常用函数
  • 使用 ChatGPT 辅助学习——为自己找一个老师
  • docker部署SpringBoot项目
  • 【sop】基于灵敏度分析的有源配电网智能软开关优化配置(Matlab代码实现)
  • Linux 安装 NFS 实现文件目录共享