ジェリック型でタプルを持っているどのクラスでも利用できる関数をつくるためにはどのようなコードの書き方をすればよろしいでしょうか。
前提としての説明 置き換えたい部分としては、 RouteData.RouteValue[] routeDatas = T1(クラス) Character target = T2(クラス) 両者のクラスでタプル(int x, int y, int z)を利用していて このタプルの比較をタプルを持っているどのクラスでも利用できるようにしたいのですが、ジェネリック型ではどのような形でwhereなどで制御して書けばよろしいでしょうか。 現状ではクラスで制御しても無理なのでどうしようか考えています。
現状のコード
C#
1コード 2 private RouteData.RouteValue NearestData(RouteData.RouteValue[] routeDatas, Character target) 3 { 4 RouteData.RouteValue routeData = null; 5 int nearest = 9999; 6 7 for (int i = 0; i < routeDatas.Length; i++) 8 { 9 int distance = Mathf.Abs(target.Position.x - routeDatas[i].Vertex.x) + 10 Mathf.Abs(target.Position.z - routeDatas[i].Vertex.z); 11 12 if (nearest > distance) 13 { 14 nearest = distance; 15 routeData = routeDatas[i]; 16 } 17 } 18 19 return routeData; 20 } 21
理想としてはこのような形でやりたいです。
C#
1コード 2 private T NearestData<T, T2>(T[] datas, T2 target) 3 { 4 T data = null; 5 int nearest = 9999; 6 7 for (int i = 0; i < datas.Length; i++) 8 { 9 int distance = Mathf.Abs(target.x - datas[i].x) + 10 Mathf.Abs(target.z - datas[i].z); 11 12 if (nearest > distance) 13 { 14 nearest = distance; 15 data = datas[i]; 16 } 17 } 18 19 return data; 20 } 21
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/27 06:11
2021/12/27 06:21
2021/12/27 06:43 編集
2021/12/27 08:06
2021/12/27 08:16
2021/12/27 08:25 編集