d结构并发

原文 工具: core.Thread std.concurrency.spawn std.parallelism.task / taskPool vibe.d.runTask etc. 代码: auto fun() { return spawn(...); } void gun() { auto task = fun(); // ... ...

d并行两个循环

原文 import std.stdio; import std.parallelism; import std.conv; enum I = 1_000; enum J = 1_000; void main() { auto results = new int[I * J]; //如果想要新的任务池: // auto tp = ...

d的@safed不阻止解引用空引用

原文 void main(immutable string[] argv) @safe @live { class Test { string a; } auto testInstance = new Test; testInstance.a = "Test String"; import std.stdio; testIn......

d的dub本地更改

如果依赖仓库有问题,可以这样让dub强制用本地仓库: 1,分叉git仓库 2,在/path/to/the_package处复制本地克隆. 3,让Dub知道: dub add-local /path/to/the_package 4,让Dub忽略已配置的发布标签...

d支持灵活数组吗

原文 struct ArenaChunk { size_t size; ArenaChunk* next; char[] memory; // 动态数组成员. } struct Arena { ArenaChunk* firstChunk; ArenaChunk* currChunk; int currInd; } fam分......

d编译时整转串

原文 enum itoa(int i) = i.stringof; enum major = 3; enum minor = 2; enum patch = 1; enum versionString = itoa!major ~ "." ~ itoa!minor ~ "." ~ itoa!patch; static assert(versionS...

d原位数组扩展优化

原文 我注意到D运行时的原位数组扩展优化仅适合特定内存对齐的数组数据. 除了重复向数组加元素之外,使用以下程序来测试, -version=neither不会删除元素(这也是"好") -version=bad丢弃前面元素...

d如何减小大小

原文 //empty.d: void main() { } dmd -de -w empty.d 空代码,却有869KiB.如何减小? 这是正常的,默认你有很多类型信息(允许动态自省的静态数据),在隐式导入object.d中的代码,运行时(如用于G...

d的属性效果2

有一段时间我也有类似想法,过去出现了很多潜在用例. 最明显示例是vibe.d的目前仅用作文档的@blocking等,但如果可在编译时强制@nonblocking等,就非常有用,目前只有运行时方法. 是的,一般,异步...

让d用户定义效果系统

std.conv.octal中还有字面. 不应删除,内置二进制字面.cgi.d比vibe.d更快. 模板化druntime,简单调用dom.d,就够了. 如果可以在库代码中定义@nogc,pure甚至像@vibe_fiber_safe等等,而不是在编译...

d参数到参数导致错误赋值

原文 @safe: int global; auto f(int* x, int* y) {//xy推导为域. x = y; global++; // 确保不是从pure中推导为域 } void g(scope int* z) { f(z, z); // 通过 } 按scope显式标记x和y时,会出...

d的dip1000仍按域变量对待中引用的副本

原文 出现在自定义动态数组类型中. //用-preview=dip1000编译 @safe: struct Arr { int** ptr; ref int* index() return scope { return *ptr; } void assign(int* p) scope { ......

d@safe中允许创建内部指针

原文 垃集规范提到,结构中具有内部指针是未定义行为. @safe代码中禁止未定义行为,但允许创建内部指针,而这可能会破坏dip1000: //用-preview=dip1000编译 @safe: struct S { int storage; int...

d的dip1000可逃逸嵌套函数返回的域指针

原文 fn嵌套函数不会在这里推断return. int* gPtr; void main() @safe { scope int* sPtr; int* fn() { return sPtr; } gPtr = fn(); } 可能最明智方法是允许非静态嵌套函数具有"return"和"...

d异常链下个方法

原文 import std.stdio; import std.exception; private: class E1 : Exception { mixin basicExceptionCtors; } class E2 : Exception { mixin basicExceptionCtors; } void foo () { try t...

vim单个符的映射

fun! Dft(t="") "单符头." exe 'set opfunc='.a:t return "\g@e" endf fun! Ts2(t) "只处理1个符即可." let i="dj".Qyf() echo i endf //然后 nnoremap gz Dft('Ts2') vim借助g@来......

vim取后面的实验,效果并不好

fun! Ts(t="") echo a:t if a:t=="" set opfunc=Ts return "g@e" "return "I"" endif let i="dj".Qyf() echo i endf " 实验表明,效果并不好.不折腾这种了.......

切换输入法快捷键.

设置/时间语言==语言键盘/输入语言热键 在输入语言间,或切换到极点中改一改.先选中,再点tab键.

vim自定义操作符,加行号

加行号: function! s:Seqno(type,...) let i = line("'[") let j = line("']") for l in range(i,j) execute l."s/^\\s*/\\0".(l-i+1).'. ' endfor endfunction function! s:ExeSeqno......

vim操作符示例

原文 如用\u打开url.而\ui]打开[]中url.而\u$/\uu/等. "从unimpaired.vim改编" function! s:DoAction(algorithm,type) " 备份设置" let sel_save = &selection let cb_save = &clipboard "使...

没有更多内容

加载失败,请刷新页面