Передача элемента обратно с быстрой проблемой

Это документированная функция:

Если x имеет длину 1, это numeric (в смысле is.numeric) и x >= 1, выборка по образцу происходит из 1:x. Обратите внимание, что эта удобная функция может привести к нежелательному поведению, когда x имеет разную длину в таких вызовах, как sample(x).

blockquote>

Альтернативой является написать свою собственную функцию, чтобы избежать этой функции:

sample.vec <- function(x, ...) x[sample(length(x), ...)]
sample.vec(10)
# [1] 10
sample.vec(10, 3, replace = TRUE)
# [1] 10 10 10

Некоторые функции с аналогичным поведением перечислены в seq vs seq_along. Когда использование seq приведет к непреднамеренным результатам?

0
задан rmaddy 26 February 2019 в 05:21
поделиться

1 ответ

Вы можете использовать блок завершения (замыкания) , чтобы вернуть результаты. Допустим, ваш response.results имеет тип [Place]. Тогда ваша функция должна выглядеть примерно так

func fetchGoogleData(forLocation: CLLocation, completion: @escaping [Place]->Void) {
    //guard let location = currentLocation else { return }
    googleClient.getGooglePlacesData(location: forLocation) { (response) in
        completion(response.results)
    } 
}

и вызываться так:

self.fetchGoogleData(forLocation: currentPosition) { (places) in
     //print(places)
}
0
ответ дан Torongo 26 February 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: