Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics Vala-打印通用值_Generics_Vala - Fatal编程技术网

Generics Vala-打印通用值

Generics Vala-打印通用值,generics,vala,Generics,Vala,我试图创建一个能够打印出其值的泛型类 class Point<T> { public T x {get; set; default = 0;} public T y {get; set; default = 0;} public void print() { stdout.puts(@"x: $x, y: $y\n"); } } int main(string[] args) { var point = new P

我试图创建一个能够打印出其值的泛型类

class Point<T>
{ 
    public T x {get; set; default = 0;}
    public T y {get; set; default = 0;}

    public void print()
    {
        stdout.puts(@"x: $x, y: $y\n");
    }
}

int main(string[] args)
{
    var point = new Point<int>();
    point.x = 12;
    point.y = 33;
    point.print();

    return 0;
}

有办法解决这个问题吗?

不是直接解决的。您需要传入一名代表才能打印您的项目:

delegate string Stringify<T>(T item);
class Point<T>
{ 
    public T x {get; set; default = 0;}
    public T y {get; set; default = 0;}

    public void print(Stringify<T> stringifier)
    {
        stdout.puts(@"x: $(stringifier(x)), y: $(stringifier(y))\n");
    }
}
int main(string[] args)
{
    var point = new Point<int>();
    point.x = 12;
    point.y = 33;
    point.print(int.to_string);
    return 0;
}
委托字符串字符串化(T项);
类点
{ 
公共tx{get;set;default=0;}
公共T y{get;set;default=0;}
公共作废打印(Stringify stringifier)
{
标准输出(@“x:$(串字器(x)),y:$(串字器(y))\n”);
}
}
int main(字符串[]args)
{
变量点=新点();
点x=12;
点y=33;
打印点(int.to_字符串);
返回0;
}
或者,您可以像Gee那样构建一组特殊情况:

delegate string Stringify<T>(T item);
class Point<T>
{ 
    public T x {get; set; default = 0;}
    public T y {get; set; default = 0;}

    public void print(Stringify<T> stringifier)
    {
        stdout.puts(@"x: $(stringifier(x)), y: $(stringifier(y))\n");
    }
}
int main(string[] args)
{
    var point = new Point<int>();
    point.x = 12;
    point.y = 33;
    point.print(int.to_string);
    return 0;
}