Вот небольшая проблема с использованием универсальной функции.Вероятно, основная ошибка из-за отсутствия практики с дженериками.В любом случае, ниже приведен код, относящийся к вопросу.
Сама универсальная функция, не показывающая ошибок:
func setThingRevision<GenericType:Revisionable>(entity name: String) -> [(GenericType,Int)] {
var resultArray = [(GenericType,Int)]()
// ..... we do some useful magic ......
return resultArray
}
Некоторые коды, использующие универсальную функцию выше:
func setMyRealStuffRevision(entity name: String) -> [(RealType,Int)] {
return setThingRevision(entity: name)
}
Вот сообщение об ошибке, выданное компилятором в последней функции (setMyRealStuffRevision):
Cannot convert return expression of type '[(_, Int)]' to return type '[(RealType, Int)]'
Вместо того, чтобы быть удивленным сообщением, Интересно, какой синтаксис использовать.
My RealType совместим с GenericType , но я не уверен, нужно ли мне предоставлять некоторую информацию для универсальной функции setThingRevision или можно сделать выводиз контекста.
--- Дополнение ---
Вот подделка setThingRevision , которую я создал для целей тестирования.
func setThingRevision<GenericType:Revisionable>(entity name: String) -> [(GenericType,Int)] {
var resultArray = [(GenericType,Int)]()
// Here name contains the name of a Core Data entity and getArrayFromEntity is
// a local function, extracting an array from the contents of the entity.
for item in getArrayFromEntity(name) as! [GenericType] {
resultArray.append((item, 99))
return resultArray
}
return resultArray
}