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.pswp.cn/news/716418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716418.shtml
英文地址,請注明出處:http://en.pswp.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是種腳本語言,主要實現前端頁面的交互,比如驗證表單,彈窗提…