我可以用 D 做一个模板吗?

问题描述 投票:0回答:1

这不起作用(这是在课堂上):

template this(T : U[], U)
    {
        this (U[] array)
        {
            static if (is(U:V[],V)  // array
            {


            } 
            else static if (is(U:V[string]),V) // hash
            {

            }
            
        }
    }

有没有办法让它工作?

d
1个回答
0
投票

你不能定义一个长格式的模板构造函数(根据语法,模板标识符不能是关键字)。你可以这样做:

this(U)(U[] array) {
   // same stuff
}

请注意,没有有效的方法来显式实例化这样一个ctor,它必须使用IFTI。

这种情况似乎不需要它,但是如果您确实需要对模板实例化进行更多控制,则可以使用工厂函数。

© www.soinside.com 2019 - 2024. All rights reserved.