如何在 V 中编写通用示例函数?

How to write a generic sample function in V?

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

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

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 documentation 中有一个关于泛型的部分,但我无法用这个示例代码弄明白。我也在 V 存储库中搜索了示例,但我只找到了 ToDo 注释,其中应该在将来实现泛型。

随着 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

}