Function Template for Dynamic Parameter
Timoses
timosesu at gmail.com
Sun Jul 1 09:55:34 UTC 2018
On Sunday, 1 July 2018 at 09:46:32 UTC, vino.B wrote:
> All,
>
> Request your help, the D document states that "Template
> functions are useful for avoiding code duplication - instead of
> writing several copies of a function, each with a different
> parameter type, a single function template can be sufficient"
> which mean we can passing any type of parameter using function
> template, similarly who we we pass in any number of parameter
> of any type(dynamic parameters) , like in python
>
> Python
>
> def myfunc(*arg)
> def myfunc(**kwargs) // multiple key-value
> def myfunc(*args, **kwargs): mix
>
> Do we have any thing similar to the above python in D
> void (func(T)( T *args) // Example
>
>
> Examples:
> void func(T)(T x)
> {
> writeln(x);
> }
> void main()
> { func("x"); // pass a string }
>
>
> void func(T)(T n3)
> {
> writeln(n); // where n = 3 parameters (1, string, char)
> }
>
> void func(T)(T n2)
> {
> writeln(n); // where n = 3 parameters (1, string)
> }
>
> void func(T)(T n1)
> {
> writeln(n); // where n = 3 parameters (1 or string or char)
> }
>
> From,
> Vino.B
Perhaps https://dlang.org/spec/template.html#variadic-templates
void func(T ...)(T args)
{
static assert(T.length <= 3);
static assert(is(T[0] == int)); // 1
pragma(msg, T.stringof);
foreach (arg; args)
{
writeln(arg);
}
}
void main()
{
func(3, "s", 1.3);
//func(1.3); // error, first argument is not an int, see
// 1
}
More information about the Digitalmars-d-learn
mailing list