Kotlin:mutableMap 无法识别 put()
Kotlin: mutableMap doesn't recognise put()
这是食谱应用程序的一部分。我在我写的食谱class中。成分是我写的另一个class。这个想法是将成分及其数量(作为 Int)存储在映射中。
在 class 正文中,我将地图声明为:
var ingredients: Map<Ingredient, Int>
并且在 init{} 正文中:
ingredients = mutableMapOf<Ingredient, Int>()
问题来了——这个函数是添加一种成分。如果成分已经在地图中,它会更新数量。 put() 方法应该执行此操作,但 Android Studio 将其变为红色,当我将鼠标悬停在 'put' 一词上时,它显示 'Unresolved reference: put'。加号也有红色下划线。我认为这是可变地图的基本部分。我哪里出错了? (别担心 - 会有 'else' 部分!)
fun addIngredientAndAmount(ingredient: Ingredient, quantity: Int) {
if (ingredients.containsKey(ingredient)) {
val oldQuantity = ingredients[ingredient]
ingredients.put(ingredient, oldQuantity + quantity)
}
}
你的 ingredients
被声明为 Map
,但是 Map
代表一个只读接口所以它没有 put
这是 [=18= 的函数].初始化为MutableMap
也没关系,因为编译器会检查你为变量指定的类型
您应该将其声明为:
var ingredients: MutableMap<Ingredient, Int>
您也可以就地初始化它而不是使用 init
块:
var ingredients: MutableMap<Ingredient, Int> = mutableMapOf<Ingredient, Int>()
如果这样做,您还可以避免显式声明类型,因为编译器会自动推断它。
var ingredients = mutableMapOf<Ingredient, Int>()
或
var ingredients: MutableMap<Ingredient, Int> = mutableMapOf()
这是食谱应用程序的一部分。我在我写的食谱class中。成分是我写的另一个class。这个想法是将成分及其数量(作为 Int)存储在映射中。
在 class 正文中,我将地图声明为:
var ingredients: Map<Ingredient, Int>
并且在 init{} 正文中:
ingredients = mutableMapOf<Ingredient, Int>()
问题来了——这个函数是添加一种成分。如果成分已经在地图中,它会更新数量。 put() 方法应该执行此操作,但 Android Studio 将其变为红色,当我将鼠标悬停在 'put' 一词上时,它显示 'Unresolved reference: put'。加号也有红色下划线。我认为这是可变地图的基本部分。我哪里出错了? (别担心 - 会有 'else' 部分!)
fun addIngredientAndAmount(ingredient: Ingredient, quantity: Int) {
if (ingredients.containsKey(ingredient)) {
val oldQuantity = ingredients[ingredient]
ingredients.put(ingredient, oldQuantity + quantity)
}
}
你的 ingredients
被声明为 Map
,但是 Map
代表一个只读接口所以它没有 put
这是 [=18= 的函数].初始化为MutableMap
也没关系,因为编译器会检查你为变量指定的类型
您应该将其声明为:
var ingredients: MutableMap<Ingredient, Int>
您也可以就地初始化它而不是使用 init
块:
var ingredients: MutableMap<Ingredient, Int> = mutableMapOf<Ingredient, Int>()
如果这样做,您还可以避免显式声明类型,因为编译器会自动推断它。
var ingredients = mutableMapOf<Ingredient, Int>()
或
var ingredients: MutableMap<Ingredient, Int> = mutableMapOf()