Ios 为什么我会得到;无法推断泛型参数",泛型
我正在通过创建一些符合名为Ios 为什么我会得到;无法推断泛型参数",泛型,ios,swift,generics,protocols,Ios,Swift,Generics,Protocols,我正在通过创建一些符合名为营养学 protocol Nutrition { var calories: Double { get set } var price: Double { get set } } struct Hamburger: Nutrition { var calories = 100.0 var price = 8.0 } struct PadThai:
营养学
protocol Nutrition {
var calories: Double { get set }
var price: Double { get set }
}
struct Hamburger: Nutrition {
var calories = 100.0
var price = 8.0
}
struct PadThai: Nutrition {
var calories = 110.0
var price = 8.50
}
接下来,我将创建一个structIndividual
,它有一个使用泛型类型的方法:
struct Individual {
var firstName: String
var lastName: String
init(fName: String, lName: String)
{
firstName = fName
lastName = lName
}
func eat<T: Nutrition>(food: T) -> T {
return food
}
编译器不断抱怨:
Generic parameter 'T' could not be inferred
我也在看其他关于这个错误的帖子,但仍然找不到解决办法。是否有人知道如何修复此问题。您的阵列需要的是实例,而不是类型本身:
let array: [Nutrition] = [
Individual(fName: "A", lName: "AAA").eat(Hamburger()),
Individual(fName: "B", lName: "BBB").eat(PadThai())
]
阵列需要的是实例,而不是类型本身:
let array: [Nutrition] = [
Individual(fName: "A", lName: "AAA").eat(Hamburger()),
Individual(fName: "B", lName: "BBB").eat(PadThai())
]
您试图将一个类型传递到一个需要该类型的实例的对象中。注意:在标识符中使用完整的单词是Swift的惯例
firstName
和lastName
比参数名fName
和lName
更可取。为什么它们与结构成员名称不一致?@AlexanderMomchliov:我之所以命名fName和lName是因为我想让它变得简单。不过,你是对的,名称应该是一致的,以便更清楚、更可读。您试图将一个类型传递到需要该类型的实例的内容中。注意:在标识符中使用全字是Swift的惯例firstName
和lastName
比参数名fName
和lName
更可取。为什么它们与结构成员名称不一致?@AlexanderMomchliov:我之所以命名fName和lName,是因为我想让它变得简单。但是,你是对的,名称应该一致,以便更清楚、更可读。