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;
}