1.我的代码
class hamburger {
var tomato: String
var patty: String
var bread: String
var number: Int
init(_ tomato: String, _ patty: String, _ bread: String, _ number: Int) {
self.tomato = tomato
self.patty = patty
self.bread = bread
self.number = number
}
init() {
self.tomato = "tomato"
self.patty = "patty"
self.bread = "bread"
self.number = 10
}
}
let sandwich = hamburger("texas" , "iii" , "iii" , 10)
print(hamburger.tomato)
2.error message
Playground execution failed:
error: dotinstall.playground:342:7: error: instance member 'tomato'
cannot be used on type 'hamburger'
print(hamburger.tomato)
^~~~~~~~~ ~~~~~~
3.我遵循的样本
enter code here// Class
class User {
let name: String // property
var score: Int
init(name: String, score: Int) {
init(_ name: String, _ score: Int) {
self.name = name
self.score = score
}
init() {
self.name = "bob"
self.score = 30
}
}
//let tom = User(name: "tom", score: 23)
let tom = User("tom", 23)
print(tom.name)
print(tom.score)
let bob = User()
print(bob.name)
print(bob.score)
我在3之后编码为1,但是我收到了类似2的错误消息。
我要解决的问题
·无论如何都要跟这个样本一样
·研究了基础的类语法,初始化器,网站上的实例
·正在寻找错误
·我检查了属性的顺序
即使我只是按照示例代码,我也不知道为什么它不起作用。
请给我解决方案的提示。
感谢
答案 0 :(得分:0)
您在面向对象编程方面犯了一个错误。使用hamburger.tomato
,您尝试访问 Class 汉堡包的属性番茄,而不是 Object ,这是三明治。所以解决方案是:
print(sandwich.tomato)
将来,您可能想要做的是更好地设计代码样式。类(汉堡)以大写字母开头,而类的对象或实例(三明治)以小写字母开头。