小编0sc*_*car的帖子

通过自动输入的变量在D中运行?

这在D中不起作用:

void doSomething(auto a, auto b){
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我只是好奇,这会不会有用?或者这在技术上是不可能的?(或者只是简单的愚蠢?)

无论如何,这可以通过任何其他方式完成吗?我想我可以使用...并查看参数列表,但我有点为懒惰的新手制作一个库,并希望它们能够轻松地创建函数而无需真正关心数据类型.我正在玩创建一个名为varlike 的结构的想法

struct var{
   byte type;
   void* data
   // ...
}

// and overload like all operators so that a lazy devver can do

var doSomething(var a, var b){
   if(a == "hello")
       b = 8;
   var c = "No.:" ~ b ~ " says:" ~ a; 
   return c;
}
Run Code Online (Sandbox Code Playgroud)

但我的脑袋已经开始受伤了.而且,我有点觉得我错过了什么.我也痛苦地意识到这可能是模板的用途......是吗?从我知道的一点点,模板看起来像这样(?)

void doSomething(T, U)( T a, U b){
   // ...
}
Run Code Online (Sandbox Code Playgroud)

但现在它看起来不那么干净了.也许我已经倒退了所有这些.也许我的困惑源于我的信念,这auto是一种动态类型,可与var我的javascript 相媲美,但实际上,它还有其他什么? …

d dynamic-data

8
推荐指数
2
解决办法
159
查看次数

OSX上的高分辨率和高帧率鼠标坐标?(或其他解决方案?)

我想在OSX上以高分辨率和高帧率获得鼠标移动.

"高帧率"= 60fps或更高(优选> 120)
"高分辨率"=子像素值

问题
我有一个大约在显示器刷新率下运行的opengl视图,所以它是~60 fps.我用鼠标环顾四周,所以我隐藏了鼠标光标,我依赖鼠标delta值.

问题是鼠标事件的帧速率太低,值被捕捉到整数(整个像素).这会导致"波涛汹涌"的观看体验.以下是鼠标增量值随时间变化的可视化:

    mouse delta X
    ^                xx
  2 |      x    x x     x xx
    | x x x   x             xx x  x x
  0 |x-x-x--xx-x-x-xx--x-x----x-xx-x-----> frame
    |
-2  |
    v
Run Code Online (Sandbox Code Playgroud)

这是用户将鼠标稍微向右移动而创建的典型(缩短)曲线.每个x代表每个帧的deltaX值,并且由于deltaX值四舍五入为整数,因此该图实际上非常准确.我们可以看到,deltaX值将是0.000一帧,然后是1.000,然后它将再次为0.000,然后是2.000,然后再次为0.000,然后是3.000,0.000,依此类推.

这意味着视图将在一帧中旋转2.000个单位,然后在下一个旋转0.000个单位,然后旋转3.000个单位.当鼠标以或多或少的恒定速度拖动时会发生这种情况.不用说,这看起来像垃圾.

那么,我怎样才能增加鼠标的事件帧率?2)获取子像素值?

到目前为止,
我已经尝试了以下内容:

- (void)mouseMoved:(NSEvent *)theEvent {
    CGFloat dx, dy;
    dx = [theEvent deltaX];
    dy = [theEvent deltaY];
    // ...
    actOnMouse(dx,dy);
}
Run Code Online (Sandbox Code Playgroud)

嗯,这个很明显.dx这里是浮点数,但值总是四舍五入(0.000,1.000等).这将创建上面的图形.

所以下一步是在进入WindowServer之前尝试点击鼠标事件,我想.所以我创建了一个CGEventTrap:

eventMask = (1 << kCGEventMouseMoved);
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap,
            0, eventMask, myCGEventCallback, NULL);
//...
myCGEventCallback(...){ …
Run Code Online (Sandbox Code Playgroud)

macos mouse cocoa iokit

7
推荐指数
2
解决办法
1912
查看次数

如何将数据传递给JavaScript中的匿名函数?

当我将'this'传递给匿名函数时:

MyClass.prototype.trigger = function(){
    window.setTimeout(function(){this.onTimeout();},1000);
}
Run Code Online (Sandbox Code Playgroud)

我得到一个"this.onTimeout不是一个函数" - 错误.我想在匿名函数执行时'this'不再可用了吗?所以我一直这样做:

MyClass.prototype.trigger = function(){
    var me = this
    window.setTimeout(function(){me.onTimeout();},1000);
}
Run Code Online (Sandbox Code Playgroud)

这真的是你应该做的事情吗?它有点工作,但感觉很奇怪.

然后我们有这个例子:

$(function(){
    function MyClass(){
        this.queue = new Array();
    }
    MyClass.prototype.gotAnswer = function(count){
        $('body').append("count:"+count+"<br/>");
    }
    MyClass.prototype.loadAll = function(){
        var count = 0;
        var item;
        while(item = this.queue.pop()){
            count++;
            var me = this;
            $.getJSON("answer.html",{},function(data){me.gotAnswer(count);});
        }
    }

    var o = new MyClass();
    o.queue.push(1);
    o.queue.push(2);
    o.loadAll();

});
Run Code Online (Sandbox Code Playgroud)

这输出:

2
2
Run Code Online (Sandbox Code Playgroud)

不应该输出:

1
2
Run Code Online (Sandbox Code Playgroud)

代替?然后我发现将$ .getJSON语句放在另一个函数中使它全部工作:

MyClass.prototype.loadAll = function(){
    var count = 0;
    var item;
    while(item …
Run Code Online (Sandbox Code Playgroud)

javascript closures

5
推荐指数
1
解决办法
2104
查看次数

允许在D中进行[i]和.xyz操作的快速向量结构?

我想在D中创建一个像这样工作的向量结构:

vec u, v;
vec w = [2,6,8];
v.x = 9; // Sets x
v[1] = w.y; // Sets y
u = v; // Should copy data
Run Code Online (Sandbox Code Playgroud)

后来我也想添加类似的东西u = v * u.但是上面的内容现在也可以.
这是我走了多远:

struct vec3f
{
    float[3] data;
    alias data this;
    @property
    {
        float x(float f) { return data[0] = f; }
        float y(float f) { return data[1] = f; }
        float z(float f) { return data[2] = f; }
        float x() { return data[0]; }
        float y() …
Run Code Online (Sandbox Code Playgroud)

struct d operator-overloading

5
推荐指数
1
解决办法
343
查看次数