Как написать универсальную функцию-образец в 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
}