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

ios – 在Swift初始化期间调用实例方法,第1张

概述我是 Swift的新手,想使用一个这样的实例方法初始化一个对象的成员变量: class MyClass { var x: String var y: String func createY() -> String { self.y = self.x + "_test" // this computation could be much more complex } 我是 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,并在init中调用此实例方法createY.然而,Swift编译器(Xcode 6.3测试版中的Swift 1.2编译器)抱怨:

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

这里’xxx’是实例方法(createY)的名称.

我可以理解Swift编译器的抱怨和潜在的问题.但是,我不知道如何解决它.在Swift中调用init的初始化代码的其他实例方法应该是正确的方法?

目前,我使用以下技巧作为工作,但我不认为这是这个问题的惯用方法(这个解决方法要求使用var声明,而不是让我感到不舒服)

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初始化期间调用实例方法全部内容,希望文章能够帮你解决ios – 在Swift初始化期间调用实例方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存