如何为编译时索引实现opIndex?

时间:2016-01-22 03:06:23

标签: d

public function login(Request $request)
{
    $email = $request->get('email');
    $password = $request->get('password');
    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        // Authentication passed...
        return redirect()->intended('some place');
    }
}

这里ref auto opIndex(size_t i){ return t[i]; } 是一个元组,需要在编译时读取t。我怎么在D?中表达这个?

1 个答案:

答案 0 :(得分:2)

由于两个原因,目前还没有任何干净的方式与opIndex进行此操作。首先很简单 - 它没有实现。这可能相对容易修复,但还有第二个原因 - 它增加了对语言语法的严重上下文敏感性。

考虑这个结构定义:

struct S
{
    // imagine this works, syntax is not important
    static int opIndex (size_t i) { return 42; }
}

现在代码S[10]是什么意思?它是十个S元素的静态数组类型吗?或者返回opIndex的静态42调用?如果不了解相当多的背景并且在某些情况下根本不可能告诉我们是不可能的(例如typeof(S[10]))。

有点相关(未经批准!)的想法:http://wiki.dlang.org/DIP63