0
我需要建立一些食品均符合命名Nutrition
爲什麼我收到「通用參數無法推斷」,泛型類型
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
}
下一個協議的學習泛型類型+協議,我創建一個struct Individual
其中有使用泛型類型的一種方法:
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
}
當我在做類似以下內容:
let array: [Nutrition] = [Individual(fName: "A", lName: "AAA").eat(Hamburger),Individual(fName: "B", lName: "BBB").eat(PadThai)]
編譯器不斷抱怨:
Generic parameter 'T' could not be inferred
我也期待在關於此錯誤的其他職位,但仍然無法找到一個解決方案。有誰知道如何解決這一問題。
你想一個類型傳遞到的東西,預計 – Hamish
型邊注的一個實例:它使用的標識符滿語雨燕約定。 'firstName'和'lastName'會優於參數名稱'fName'和'lName'。爲什麼它們與結構成員名稱不一致? – Alexander
@AlexanderMomchliov:我爲fName和lName命名的原因是因爲我想簡化它。但是,您說得對,名稱應該是一致的,以便更清晰並更具可讀性。 – tonytran