用函数初始化结构值

时间:2019-12-05 22:37:31

标签: swift init

我有一个带有%I属性的Swift结构。在初始化程序中,我可以将属性设置为普通属性。但是,如果我想将其值的逻辑提取到另一个函数中,则会收到编译器警告。

这有效:

title

此操作失败:

init(document: MyDocument) {
    documentIdentifier = document.documentIdentifier
    createDate = document.createDate
    title = "A Title"
}

编译器说 title = generateTitle(forDocument: document) 。如果我在该行的正上方放置一个静态设置器,错误就会消失。我的generate函数返回一个非可选值。编译器脾气暴躁的是什么?

1 个答案:

答案 0 :(得分:2)

"T" "L" "g" "1" 3.35 1.9 9.796 "2" 2.21 1.84 9.827 "3" 2.73 1.83 9.803 "4" 2.39 1.8 9.822 "5" 1.13 0.24 9.811 "6" 1.73 0.53 9.821 "7" 1.42 0.42 9.818 "8" 1.5 0.49 9.792 "9" 1.99 1.41 9.816 "10" 1.92 0.96 9.809 "11" 3.36 1.95 9.806 "12" 2.43 0.88 9.835 "13" 1.1 0.47 9.806 "14" 2.76 0.76 9.817 "15" 1.16 0.53 9.796 "16" 2.97 1.77 9.84 "17" 1.96 1.08 9.798 "18" 2.98 1.41 9.818 "19" 2.52 1.48 9.831 是一个实例方法,但是在初始化程序返回之前尚未创建实例本身,因此您无法在其上调用任何方法。如果您确实要将generateTitle的设置代码提取到一个单独的方法中,并且实际上并没有从该方法访问任何实例属性,则可以将其设置为title,因此甚至可以从{{ 1}}。