我想要什么: 在使用之前初始化结构。但是,即使经过大量尝试和搜索,我还是真的不知道如何。
结构示例:
struct Person: Decodable {
let name: String
let age: Int
}
我想在脚本中全局使用此结构。我认为应该是这样的(但是由于第3行,它不起作用):
import UIKit
class ViewController: UIViewController {
let personExample: Person()
func configure(person: Person) {
self.personExample = person
}
override func viewDidLoad() {
super.viewDidLoad()
print(self.personExample)
}
}
答案 0 :(得分:3)
这里的语法完全不正确:
let personExample: Person()
这是什么意思
let personExample: Person
Person()
是调用init()
的结果,它是一个值,而不是类型,并且对于该类型而言,它也不是有效的初始化器。 Person
是类型,这就是您想要的声明。
但是,您在此处编写的内容与描述不太吻合。如果要“全局”,则实际上是一个实例变量。您可能在这里的意思是:
var personExample = Person(name: "Bob", age: 21)
这将为该值分配personExample
(并通过类型推断将类型分配给Person
)。我在这里使用var
是因为configure(person:)
试图对其进行修改。
使用情节提要板时,您也可能对视图控制器中实例变量的初始化感到困惑。如果是您的问题(例如,您看到在初始化过程中未设置personExample的错误),则需要进一步说明您的情况,我们将为您提供帮助。
答案 1 :(得分:-1)
您需要
winners = ["Wane", "Trevor", "Franklin", "Martoz"]
winner = random.choice(winners)
winners.remove(winner)
winners.append("Michael")
print(winners)
首先,此If isarray(myarr) then
for i = ubound(myarr,1) to lbound(myarr,1) step -1
for j = ubound(myarr,2) to lbound (myarr,2) step -1
if myarr(i,j) <> 0 then
K=k+1
Mysum = mysum + myarr(I,j)
Endif
Next j
Next i
Else ‘ single value
mysum =myarr(I,j)
Endif
是不正确的语法,如果您更改为
var personExample: Person?
func configure(person: Person) {
self.personExample = person
}
它将引发错误,因为必须在vc init方法中将其初始化,如果您未实现编码,请删除let personExample: Person()