首页 > 解决方案 > 如何在 V 中编写通用示例函数?

问题描述

我想sample在 V 中为数组实现一个通用函数。灵感来自base::sample()于 R。

replace没有 R 函数的and选项并且仅限于整数数组的非常基本的原型prob可能如下所示:

pub fn sample_int(arr[] int, size int) []int {

  mut res := [0].repeat(size)
  for i := 0; i < size; i++ {
    res[i] = arr[rand.next(arr.len)]
  }

  return res

}

目前是否有可能使此函数通用以适用于各种数组?我将如何实现这一点?

V 文档中有一个关于泛型的部分,但我无法用这个示例代码弄清楚。我还在 V 存储库中搜索了示例,但我只找到了应该在未来实现泛型的 ToDo 注释。

标签: genericspolymorphismvlang

解决方案


随着 V 的进展,这些文档已经过时了。这是如何在 V 中将泛型与您的函数一起使用的代码。也加入不和谐服务器进行讨论和更多的谈话。

pub fn sample_int<T>(arr[] T, size int) []T {

  mut res := [arr[1]].repeat(size)
  for i := 0; i < size; i++ {
    res[i] = arr[rand.next(arr.len)]
  }

  return res

}

推荐阅读