2403d,d的108版本更改

原文

编译器更改

1,在object.d中给TypeInfo_Class添加了.nameSig字段
2,总是在调用点求值像__FILE__此类关键字
3,现在可按整数数组转换十六进制串
4,添加支持插值式序列

库更改

1,isForwardRange,isBidirectionalRangeisRandomAccessRange现在带可选元素类型
2,std.uni已从Unicode15.0.0升级到15.1.0

配音更改

fetch命令现在支持多个参数,递归fetch,且是项目相关的.

编译器更改

1,在object.d中给TypeInfo_Class添加了.nameSig字段

这是类的完整全名16字节md5签名.用它来比较两个类等价性,而不是回退比较相当慢名字串.

结果是需要重新编译druntimephobos以与此更改兼容.也需要重新编译.

2,总是在调用点求值像__FILE__此类关键字

函数的默认参数可包含__FILE__,__FILE_FULL_PATH__,__MODULE__,__LINE__,__FUNCTION____PRETTY_FUNCTION__关键字.

现在,只要在初化器中使用,无论是否直接使用,在更复杂式调用函数源位置计算它们.

以前,必须在初化器中直接使用,以便在调用点求值.下面是一些示例,现在在调用点求值更复杂的初化器:

void func1(const(char)* file = __FILE__.ptr, size_t line = __LINE__)
{//现在,打印`调用函数`文件名.以前它是`func1`自身文件名.printf("%s:%zd\n", file, line);
}struct Loc
{string file;size_t line;
}
void func2(Loc loc = Loc(__FILE__, __LINE__))
{//`loc`变量现在包含`调用函数`的`文件和行`.以前它是`func2`的位置.writeln(loc.file, ":", loc.line);
}
Loc defaultLoc(string file = __FILE__, size_t line = __LINE__)
{return Loc(file, line);
}
void func3(Loc loc = defaultLoc)
{//`loc`变量包含`func3`调用函数的文件和行,而不是`func3`或`defaultLoc`的位置.writeln(loc.file, ":", loc.line);
}

3,现在可按整数数组转换十六进制串

十六进制串是嵌入二进制数据源文件中的最有效方法.但是,因为在CTFE时禁止再解释转换数组,很难初化short[],int[]long[].

现在,可按元素类型大于字节整数数组转换十六进制串.与整数文本写入方式一致,按大头序假定字节序.

immutable uint[] data = cast(immutable uint[]) x"AABBCCDD";
static assert(data[0] == 0xAABBCCDD);

现在也可用符后缀来表示大小为2或4的整数:

immutable ushort[] f = x"80 3F"w;
static assert(f[0] == 0x803F);
immutable int[] f = x"80 35 FF FD"d;
static assert(f[0] == 0x803FFF);

以前,会用1或3填充每个字节,但没有用,见24363问题.
如果串的字节长度不是目标元素大小的倍数,则为错误:

immutable ushort[] e = x"AABBCC"w; //错误,`3`字节不是`"ushort.sizeof"`的倍数

4,添加支持插值式序列

插值式序列是在库代码中实现串插值等功能的方法.添加了三种形式的字面:

i"Content $(a + 4)"
i`Content $(a + 4)`
iq{Content $(a + 4)}

它们都提供了相同的东西:一个可传递其他函数元组,比如std.stdiowritelnstd.conv文本(text):

int a = 6;
writeln(i"Content $(a + 4)"); //打印"内容`10"`

还可把它们传递给理解新core.interpolation模块中类型的其他函数.可在该模块文档或此仓库中找到许多示例.

库更改

isForwardRange,isBidirectionalRangeisRandomAccessRange现在带可选元素类型

Phobos2.106中,isInputRange添加了一个可选的第二个模板参数,以便方便地检查区间元素类型.现在,已添加相同参数isForwardRange,isBidirectionalRangeisRandomAccessRange.

如前,如果传递第二个类型参数给其中一个模板,则会检查区间元素类型,以查看它是否可把限定符转换为给定类型,且必须通过此附加检查才能求值模板计算结果为true.

示例:

//完全匹配
static assert( isForwardRange!(int[], int));
//匹配限定符转换
static assert( isBidirectionalRange!(int[], const(int));
//不匹配
static assert(!isRandomAccessRange!(int[], string));

std.uni已从Unicode15.0.0升级到15.1.0

Unicode更新于2023年9月12日发布.见这里

import std;
void main()
{const alphaCount = iota(0, dchar.max).filter!(std.uni.isAlpha).walkLength;writeln(alphaCount);//以前:`137765`:现在`138387`,对`"isAlpha"`,有`622`个新`dchar`返回`true`
}

内部Unicode(std/internal/unicode_tables.d)也已更改为使用十六进制串而不是数组字面,这样导入速度更快.

配音更改

fetch命令现在支持多个参数,递归fetch,并且是项目相关的

以前,dub fetch只能取单个包,且在独立工作目录工作.
此版本中,添加了对多个包的支持,因此现在可实现以下功能:

$ dub fetch vibe-d@0.9.0 vibe-d@0.9.1 vibe-d@0.9.2

以前无参调用时,dub fetch会报错.但是,它现在试取当前项目的(如果存在)依赖项.

最后,取包时,取其所有依赖项可能很有用.这是为项目自动完成的,现在也可直接手动提取完成:

$ dub fetch --recursive vibe-d@0.9.0 vibe-d@0.9.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/716418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8s 镜像缓存管理 kube-fledged 认知

写在前面 博文内容为K8s 镜像缓存管理 kube-fledged 认知内容涉及: kube-fledged 简单介绍部署以及基本使用 理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。…

springboot236基于springboot在线课程管理系统的设计与实现

基于SpringBoot在线课程管理系统的设计与实现 摘要 本文首先介绍了在线课程管理系统的现状及开发背景,然后论述了系统的设计目标、系统需求、总体设计方案以及系统的详细设计和实现,最后对在线课程管理系统进行了系统检测并提出了还需要改进的问题。本系…

Spring Data Redis 使用方式

在Java中操作Redis 1. 在Java中操作Redis1.1 Redis的Java客户端1.2 Spring Data Redis使用方式1.2.1 介绍1.2.1 环境搭建1.2.3 操作常见类型数据 1. 在Java中操作Redis 1.1 Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: JedisLettuceSpri…

关于Axios接口请求超时处理与重试的方法教程

在前端开发中,使用Axios作为HTTP客户端库进行接口请求是非常常见的做法。然而,在实际开发中,我们经常会遇到网络不稳定或服务器响应缓慢导致接口请求超时的情况。为了提高用户体验和程序的稳定性,我们需要实现接口请求超时的处理与…

UnityAPI的学习——Transform类

Transform类继承自Component类,并实现了IEnumberable接口。Transform是GameObject必须拥有得一个组件,用来管理所在GameObject对象的坐标位置、选择角度、和大小缩放。 Transform实现了IEnumberable接口,因此可以在程序中使用foreach()方法快…

echarts vue 动画效果的水球图、波浪图教程

1、安装插件 前提是已经安装了echarts(我的版本是4.2.1) npm install echarts-liquidfill --save 我安装了3.1.0版本的,结果运行时报错"TypeError: wave.ensureState is not a function" 原因:echarts版本和echarts-l…

miniconda3彻底删除虚拟环境

退出虚拟环境:确保您不在要删除的虚拟环境中。如果在,使用命令 conda deactivate 来退出当前激活的虚拟环境。查看虚拟环境列表:运行命令 conda env list 或 conda info -e 来查看所有存在的虚拟环境及其路径。删除虚拟环境:使用命…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统,虚拟机版本为VMware Workstation 16 pro,Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

一、前缀和的原理和特点 prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足: prefix有一个重要的特性,可以用于快速生成p…

WordPress建站入门教程:如何安装本地WordPress网站运行环境?

有些站长想要搭建WordPress网站,又担心自己玩不转,白白浪费购买域名和主机空间的费用。像这种情况,最好的做法就是在自己电脑上安装一个WordPress网站运行环境,然后在本地电脑搭建WordPress,等熟悉掌握后再考虑购买域名…

设计模式学习笔记——抽象工厂模式

设计模式(创建型)—— 抽象工厂模式 在工厂模式中,我们为每一个类都设计了一个工厂,以此来获取该类的对象,但缺点就是一旦类多了,工厂就多了,这时候我们可以考虑这些类间是否有关联&#xff0c…

多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测

多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测 目录 多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现GWO-Elman灰狼优化循环神经网络多输入多输出…

kernel bypass 是什么?

文章目录 一、kernel bypass 是什么二、Kernel Bypass技术优缺点三、Kernel Bypass技术应用领域四、Kernel Bypass的实现方式 一、kernel bypass 是什么 Kernel Bypass是一种技术,旨在通过绕过操作系统核来提高网络数据包处理的性能和降低延迟。它的主要优点是高性能…

[LeetBook]【学习日记】有序链表合并

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] …

如何在电脑上中恢复已删除的视频

您可以在电脑中恢复已删除的视频,无需任何繁琐的工作。您所需要做的就是阅读本文,了解恢复已删除视频的最佳方法。 一次错误的点击可能会夺走您以视频形式存储的宝贵记忆。嗯,有些视频不适合删除,您希望永远保留它们。失去这些宝…

如何使用Docker搭建StackEdit编辑器并结合内网穿透实现远程办公

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

优选算法|【双指针】|1089.复写零

目录 题目描述 题目解析 算法原理讲解 代码 题目描述 1089. 复写零 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就…

LeetCode受限条件下可到达节点的数目

题目描述 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restr…

OJ:移除链表元素

203. 移除链表元素 - 力扣(LeetCode) 思路:这个题可以直接在原链表上进行修改,但是修改链表的指向是有点麻烦的,所以我们给两个指针,phead和ptail,这是新链表的两个指针,再给一个指针pcur来遍历…

Java和JavaScript区别

1. Java和javaScript都是面向对象语言 2. 他两除了名字相似之外没有任何关系 3. Java是一种真正的面向对象语言,不管开发什么程序都要设计对象;而JavaScript是种脚本语言,主要实现前端页面的交互,比如验证表单,弹窗提…