我是Swift的新手。我在宣布课程时遇到了麻烦。我有以下内容 -
class position_
{
var x: Float = 0
var y: Float = 0
}
class node_
{
var label: String = nil
var coordinates: position_
}
现在我可以在initializer init()
课程中创建position_
,就像这样 -
class position_
{
var x: Float
var y: Float
init()
{
x = 0
y = 0
}
}
我是否可以在node_ class
中使用此初始值设定项?因为没有init()
函数,就无法初始化node_ class
中的坐标变量。或者有吗?
我发现很难相信Swift会要求我在position_
中再次初始化每个node_ class
变量。换句话说,是否有比下面更好的选择?
class node_
{
var label: String
var coordinates: position_
init()
{
name = nil
coordinates.x = 0
coordinates.y = 0
}
}
此外,如果我想创建另一个变量,请说" b" UIButton
类型如何初始化?这就是我想要做的。
答案 0 :(得分:1)
您不必再次初始化每个变量,因为每次创建类,结构或枚举的新实例时,它们的存储属性都具有初始值。
始终尝试提供默认值,而不是在初始值设定项中设置值。如果类或结构为其所有属性提供默认值,Swift会自动为您提供默认初始值设定项。
class Position {
var x: Float = 0
var y: Float = 20
}
let position = Position() // nice!
位置类是一个非常简单的数据结构 - 感觉结构类型在这里更合适。
最终代码 - 使用UIButton
struct Position {
var x: Float = 0
var y: Float = 20
}
class Node {
var label = "" // label is inferred to be of type String
var coordinates = Position()
var button = UIButton(type: .InfoDark)
}
let myNode = Node()
答案 1 :(得分:0)
首先每个class
名称以capitalize
字符开头。所以像这样改变你的node_类
class Node
{
var label: String
var coordinates: position_
init()
{
name = ""
coordinates = position_()
}
}
同时使用position_
更改您的班级Position
。
而不是使用_
尝试在capitalize
每个单词的第一个字符中编写类名,如PositionMarker
。
希望这会对你有所帮助。