Swift: общий параметр 'T' не может быть выведен - PullRequest
0 голосов
/ 17 января 2019

У меня есть протокол с именем P, и я хочу написать функцию, которая бы возвращала экземпляр любого типа, соответствующий этому протоколу.

Я написал это:

func f<T: P>() -> T? {
    // ... 
}

Но потом, когда я пытаюсь это назвать:

var fp = f()

Я получаю эту ошибку: Generic parameter 'T' could not be inferred. Что я делаю не так и как это решить? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 17 января 2019

Ты очень близко. Скажем, у вас есть struct A, который соответствует P. Тогда вы можете указать общий параметр следующим образом:

var fp: A? = f()

Без этой информации компилятор не может знать, какой тип fp должен быть.

...