在一个快速的课程中,我通过它说这是创建类实例的有效方法:
class Heroes
{
var (name, gender, kingdom) = ("","","")
var (level, ad, hp) = (0,0,0)
init(name: String)
{
self.name = name
}
}
以下部分是造成此错误的原因 "cannot assign value of type '(name: String)' to type 'Heroes'
let sirGeorge: Heroes
sirGeorge = (name: "Sir George")
以下方式运行正常,但我不理解上述方法的语法,也不了解编译器。是否有一种新的方式在Swift 3中写这个呢?
var sirLance = Heroes(name: "Sir Lancelot")
答案 0 :(得分:1)
因为如果你想创建对象Heroes,首先需要使用Class Name Heroes 然后使用括号的括号(名称:" Sir George" ),像这样:
let sirGeorge: Heroes
sirGeorge = Heroes(name: "Sir George")
答案 1 :(得分:0)
let sirGeorge: Heroes
您使用let
和名称sirGeorge
创建常量,并将常量的类型设置为Heroes
。它是值参考数据类型。
sirGeorge = (name: "Sir George")
您尝试使用类型为Heroes
的新值指定内容类型'(name: String)'
的第二行并听到您收到问题。因为您输入的内容为Heroes
而非'(name: String)'
。另一方面,您尝试分配给类的值构造函数。
答案 2 :(得分:0)
当你这样做的时候 sirGeorge =(姓名:"乔治爵士") 就像你想分配(姓名:"乔治爵士")到sirGeorge这是错误的,因为sirGeorge是班级英雄的对象
所以这是正确的方法
因为现在你正在初始化你的对象。这就像调用init(比如说init函数)和init需要一个String" Sir George"
答案 3 :(得分:0)
第1行: let sirGeorge: Heroes
在这里,您要创建sirGeorge
类型的常量Heroes
。这是对的。唯一值sirGeorge
可以采用Heroes
类型,而不是其他任何内容。
第2行: sirGeorge = (name: "Sir George")
您在此处为sirGeorge
分配了(name: "Sir George")
而非Heroes
类型的值。因此,为了将值赋给sirGeorge
,您需要创建Heroes
的实例,即
sirGeorge = Heroes(name: "Sir George")
这将调用init(name: String
的{{1}}。