gpt4 book ai didi

ios - 在 Swift 初始化期间调用实例方法

转载 作者:IT王子 更新时间:2023-10-29 05:23:34 28 4
gpt4 key购买 nike

我是 Swift 新手,想使用这样的实例方法初始化对象的成员变量:

class MyClass {
var x: String
var y: String

func createY() -> String {
self.y = self.x + "_test" // this computation could be much more complex
}

init(x: String) {
self.x = x
self.y = self.createY()
}
}

基本上,不是内联 init 中的所有初始化代码方法,我想提取y的初始化代码到专用方法createY并调用此实例方法 createYinit .但是,Swift 编译器(Xcode 6.3 beta 中的 Swift 1.2 编译器)提示:

use of 'self' in method call 'xxx' before super.init initialize self

这里'xxx'是实例方法(createY)的名称。

我能理解 Swift 编译器在提示什么,以及它想要解决的潜在问题。但是,我不知道如何解决它。在 Swift 中调用初始化代码的其他实例方法的正确方法应该是什么 init

目前,我使用以下技巧作为解决方法,但我认为这不是解决此问题的惯用方法(并且此解决方法要求使用 y 而不是 var 来声明 let,这让我也感到不安):

init(x: String) {
self.x = x
super.init()
self.y = createY()
}

任何意见表示赞赏。谢谢。

最佳答案

createY() 转换为接受 x 作为参数并返回 y 的全局函数或类函数。

func createY(x: String) -> String {
return x + "_test" // this computation could be much more complex
}

然后从您的 init 正常调用它。

class MyClass {
let x: String
let y: String

init(x: String) {
self.x = x
self.y = createY(x)
}
}

关于ios - 在 Swift 初始化期间调用实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com