![]() |
1
1
原因是phobos库认为int[]是随机访问,而char[]只是顺序访问,因此没有运算符。 好吧,为什么?这就是D社区所说的“自动解码”。char[]是一个utf-8字符串。phobos试图提供帮助,将这些utf-8序列转换为一系列dchars,这些dchars表示unicode代码点。 utf-8序列具有可变长度。大多数英文文本都有一个字节对应于屏幕上的一个字符,但对于其他语言来说,这通常是不正确的。例如,重音符号可以由各种两字节或三字节序列表示。(而且在某些情况下,它变得更加复杂,各种相同的视觉表示具有不同的内部表示-std.uni.bygrapheme是火卫一图书馆的一部分,旨在帮助实现这一点) 无论如何,phobos-再次尝试帮助,尽管我们基本上普遍认为这是一个错误的设计,现在回头看-试图将这些可能的多字节序列压缩为一个dchar,每次循环。如果不扫描到该点的整个字符串,它就无法知道第n个dchar在哪里(因为每个dchar可能有不同的长度,您必须检查它才能知道大小),因此它无法廉价地做到这一点。 由于[]运算符应该是廉价的o(1)常量时间(和常量内存)操作,因此此实现太复杂,无法向接口确认,您将得到错误。
这个
|
![]() |
Divyat · D语言的BNF语法形式[闭口] 7 年前 |
![]() |
hiropon · 有没有办法用Dlang同时分配多个变量? 7 年前 |
![]() |
Jonathan Wilbur · 从D中的抽象类运行单元测试? 7 年前 |
![]() |
thinwybk · 如何使用D访问linux字符设备? 8 年前 |
![]() |
user3069488 · 震波。D-未定义标识符(Dlang) 8 年前 |
![]() |
Dmitry Bubnenkov · 错误:实例化模板实例时出错 8 年前 |
![]() |
Matt Smith · 正在转义对局部变量的引用 9 年前 |
![]() |
StillLearningToCode · 将字符串解析为D中的标记 10 年前 |
![]() |
Suliman · D?的TUI(文本用户界面)? 10 年前 |