加载中
vim的特殊技巧

原文 按正则排序: :sort r /regex/ " 零宽度 :h /\@=" /<\@<=[^>]*>\@= :搜索标签内容,忽略>形 /<\@<=\_[^>]*>\@= :在可能的`多行`中搜索标签 :bufdo exe ":normal Gp" | update : :bufdo ex...

vim的2个高亮匹配函数

matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]]) 在当前窗口,定义待高亮模式,会用{group}高亮组高亮.返回可用matchdelete()的(ID).其中ID是和窗口绑定的. 匹配区分大小写且...

d简化导入

原文 可以这样: struct MY_KEY { template opDispatch(string name) { static import bindbc.glfw; mixin(`alias opDispatch = bindbc.glfw.GLFW_KEY_`, name, `;`); } } 这样,写M......

d等效指针

原文 @safe void check() { int random; auto createGenerator() { int* p = &random; return p; } scope gen = createGenerator; } 它确实编译成功.两者都应成功编译,因为结......

d共享左值

原文 shared TT[] a; T processArray(T)(ref T[] p){/*...*/} //函数在参数上调用`.保留`.意思是`void`为函数`返回类型` a.processArray; //不能从`!()(shared(T[]))`推导. 即使更改函数为仅...

d,cast转换aa为右值

原文 测试用例: shared int[int] aa; void main () { cast()aa[1] = 1;//违反区间 } 原来工作正常. 你正在aa[1]上抛弃共享.该表达式是访问值,而不是赋值.与定义opIndex和opIndexAssign的结构...

d包含区间

alias ir = inclusiveRange; auto inclusiveRange(T = int)(T f = T(0), T l = T(0), T s = T(1)) { if(!l) { l = f; f = 0; } return InclusiveRange!T(f, l, s); } struct InclusiveRange(...

vim简单保存窗口标识

借助脚本变量来保存. fun! Ts() let i=win_getid() call Sgid(i) echo Ggid() endf Sgid(i)里面只是一个脚本变量而已.通过Ggid()来返回.同样,可以通过脚本变量在窗口间传值! 可任意传数据: f...

vim取上个窗口号.

let window_count = winnr('$') let prev_window = winnr('#')

d为何用模板参数

原文 pure @nogc @safe BigInt opAssign(T : BigInt)(T x); //上下有何差别? pure @nogc @safe BigInt opAssign(BigInt x); 是的,这种语法允许任何隐式转换为BigInt;例如: import std.bigint...

d中shared用法

原文 永远不要使用__gshared.这是明显安全漏洞.改为使用shared. 如果使用时遇见shared的编译错误,那是编译器在警告你.应该认真考虑线程安全,然后才在正确的位置抛弃shared. 使用__gshared,编...

d中简单禁止垃集

原文 { import core.memory: GC; GC.disable(); scope(exit) GC.enable(); foreach (...) // 热代码. } void load_assets() { import core.memory: GC; // 分配,加载等. ......

d初化模板构造器

原文 struct TestArray(ulong element_n) { int[element_n] elements; this(string type)(ulong number) { pragma(msg, "类型为: " ~ typeof(type).stringof); } } //我想创建它并能够成功地...

d切片示例

原文 struct Integers { private int z = 0; public bool empty() { return false; } public int front() { return this.z; } public void popFront() { this.z *= -1; if (this.z <= 0) ......

vim你也可以写文本块

function! textobj#dmk#select_a() ?``` let start_pos = getpos('.') normal!j /``` let end_pos = getpos('.') return ['V', start_pos, end_pos] endfunction function! textobj#dmk#sele...

d浮点小问题

float z = 85886696878585969769557975866955695.E0; //整溢出. real x = 0x1p-16383; //不能表示该数. 它是为了支持UFCS(通用函数调用语法).D兼容C的想法是,当代码有不同含义时,不要*安静*...

d用cmake来混合d与C++

原文 创建一个将在D中调用的C++函数. 使用CMake构建静态C++库,并添加依赖项(在我的例子中:SDL库) (dub init)创建新项目. 添加这些行到dub.json: "dflags": ["-L-lstdc++"], "lflags": ["-Lb...

d找包中函数

原文 D包没有关闭;谁都可随时加新模块. 可: static foreach (sym; __traits(allMembers, mixin("std.string"))) { pragma(msg, sym.stringof); } 然后必须检查sym是否是模板或函数或其他. s...

2022/08/06 18:13
72
d命名单元测试

原文 通常在独立单元测试上工作,因为速度和更少输出,只想运行一个.而通常在文件中有几个单元测试.急需要命名单元测试. 只需要,version(newFeature) unittest {}. #! /usr/bin/env dub /++ d...

2022/08/06 17:14
55
d重载操作符

原文 struct Struct { void opOpAssign(string op)(Struct rhs) //在此实现`/=`. { //... } } unittest { Struct a = Struct(1); Struct b = Struct(2); a /= b; assert(a == St......

2022/08/06 17:01
305

没有更多内容

加载失败,请刷新页面

返回顶部
顶部