sách gpt4 ai đã đi

swift - 在 super.init 初始化 self super.init 之前,在属性访问 'self' 中使用 'model'(品牌 : brand, 模型:模型)

In lại 作者:可可西里 更新时间:2023-11-01 00:56:26 26 4
mua khóa gpt4 Nike

我正在学习本教程:https://www.raywenderlich.com/160728/object-oriented-programming-swift

...并尝试对代码进行一些个人调整,看看我是否能够自己理解一些核心概念。

我最终得到以下代码:

class Instrument {

var brand: String
var model: String

init(brand: String, model: String) {

self.brand = brand
self.model = model

}

func tune() {

print("\(model) tuned !")
}

func play() {

print("\(model) plays an improvised melody")

}

func perform() {

print(tune())
print(play())
}

}

这个子类:

class Piano: Instrument {

var hasPedals: Bool

init(hasPedals: Bool ) {

self.hasPedals = hasPedals
super.init(brand: brand, model: model)

}

}

此时,我收到以下错误消息:

Playground execution failed:

error: Object oriented programming.playground:28:41: error: use of 'self' in property access 'model' before super.init initializes self super.init(brand: brand, model: model) ^

error: Object oriented programming.playground:28:27: error: use of 'self' in property access 'brand' before super.init initializes self super.init(brand: brand, model: model)

我觉得这是一个非常明显的错误,但我不知道如何解决。


编辑:非常感谢你们提供 super 干净的答案。现在对我来说很有意义!

如果我理解正确,即使您在子类中使用自定义 init 方法,您也需要初始化所有存储的属性(来自父类(super class)和子类),对吧?

1 Câu trả lời

您正在调用父类(super class)的 khởi tạo 方法来初始化您的子类的一部分。然而,在你初始化它之前,你传递了一个未初始化的变量。只需将这些变量添加到 Piano 的参数中即可:

init(hasPedals: Bool, brand: String, model: String)

关于swift - 在 super.init 初始化 self super.init 之前,在属性访问 'self' 中使用 'model'(品牌 : brand, 模型:模型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46510969/

26 4 0
之前?

在 MVC3 中,我可以轻松地将 jQuery 脚本标签移动到页面底部“_Layout.vbhtml” 但是,在 ASP.NET MVC3 中,当您使用编辑器模板创建 Controller 时,脚手

  • jquery - 返回到使用 .text() 之前

    悬停时内容被替换,但是当鼠标离开元素时我希望它变回来。我该怎么做? $('.img-wrap').hover(function(){ $(this).find('h4').text('Go

  • C 期望标识符或 ‘(’ 在 ‘{’ 之前

    Đã đóng. Vấn đề này không thể tái hiện hoặc do lỗi đánh máy. Hiện tại không chấp nhận câu trả lời. Sự cố này xảy ra do lỗi đánh máy hoặc một vấn đề không thể tái hiện được nữa. Mặc dù những câu hỏi tương tự có thể nằm trong chủ đề

  • c - 预计在 elseif 之前

    Đã đóng. Vấn đề này không thể tái hiện hoặc do lỗi đánh máy. Hiện tại không chấp nhận câu trả lời. Sự cố này xảy ra do lỗi đánh máy hoặc một vấn đề không thể tái hiện được nữa. Mặc dù những câu hỏi tương tự có thể nằm trong chủ đề

  • c - 预期说明符限定符列表位于 'if' 之前

    已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含有效代码以重现该问题。

  • c++ - 预期类型说明符位于 'QwtLog10ScaleEngine' 之前?

    版本:qwt 6.0.1我尝试开发频谱的对数缩放。我使用简单的线条来启用缩放plotspectrum->setAxisScaleEngine(QwtPlot::yLeft, new QwtLog10S

  • c# - 插入触发器 SQL 之前

    我有两个相同的表,I_Subject 和 I_Temp_Subject,我想将 Temp_Subject 表复制到 Subject 表。 I_Temp_Subject 由简单用户使用,I_Subjec

  • javascript - 第一次绘制如何发生在 DOMContentLoaded 之前?

    我的印象是第一次绘制发生在触发 DOMContentLoaded 事件之后。特别是,因为我认为为了让第一次绘制发生,需要渲染树,它依赖于 DOM 构造。另外,我知道 DOM 构造完成时会触发 DOMC

  • 可可西里
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Các bài viết nóng hổi trên toàn bộ trang web
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com