我必须上课:FirstViewController
和PlanGenerator
。
PlanGenerator
有一种称为的方法getPlanForIndex (day:Int) -> ([PlanElement], [PlanElement])?
。它会返回两个不同的Array,都包含的Object Plan Element
。
getPlanForIndex (day:Int) -> ([PlanElement], [PlanElement])? {
// Do some work and fill arrays
return (firstArray, secondArray)
}
在中,FirstViewController
我创建了两个属性:
let plan:[PlanElement] = [PlanElement]()
let planGen:PlanGenerator = PlanGenerator()
FirstViewController
有一个方法叫做:
func prepareView () {
plan = planGen.getPlanForIndex(dayIndex)
}
但是当我想调用它时,我得到了错误消息: Cannot assign to 'plan' in 'self'
首先,您的plan
成员是一个常量(用声明let
),并且您要在之外分配它init
。如果要在初始化后分配给它,则需要使用进行声明var
。
同样,您getPlanForIndex
将返回一个元组,并将其分配给单数(而非元组)类型的成员。如果只想分配一个元组的一部分,请按以下步骤进行:
(plan, _) = planGen.getPlanForIndex(dayIndex)
这样就可以将一个元组分配给一个元组,从而使编译器满意,但是会丢弃第二个元素。
如果您想plan
成为一个元组,则必须这样声明和初始化它。从注释中看起来就像您想出了一种方法,但是这是一种最少键入的方法(无论从哪个意义上来说):
var plan: ([PlanElement], [PlanElement]) = ([], [])
(一旦声明了数组的类型,[]
就应理解为该类型的空数组。只需var plan = ([], [])
将类型保留为模棱两可即可。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句