Как написать универсальную функцию-образец в V?

Я хотел бы реализовать общий sample функция для массивов в V. Вдохновением для этого является base::sample() в R.

Очень простой прототип без replace а также prob параметры функции R и ограниченные целочисленными массивами могут выглядеть так:

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, в которых предполагается, что в будущем будут реализованы дженерики.

1 ответ

Решение

Документация очень устарела с развитием V. Вот код того, как использовать дженерики в V с вашей функцией. Также присоединяйтесь к серверу Discord для обсуждений и других разговоров.

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

}
Другие вопросы по тегам