[英]Swift - Initializing class variables which are classes
我是Swift的新手。 我在声明课程时遇到了麻烦。 我有以下内容-
class position_
{
var x: Float = 0
var y: Float = 0
}
class node_
{
var label: String = nil
var coordinates: position_
}
现在,我可以在position_
类中创建一个initializer init()
,如下所示-
class position_
{
var x: Float
var y: Float
init()
{
x = 0
y = 0
}
}
无论如何,我可以在node_ class
使用此初始化程序吗? 因为没有init()
函数,就无法初始化node_ class
的坐标变量。 还是在那里?
我发现很难相信Swift会要求我再次在node_ class
初始化每个position_
变量。 换句话说,有没有比以下更好的选择了?
class node_
{
var label: String
var coordinates: position_
init()
{
name = nil
coordinates.x = 0
coordinates.y = 0
}
}
另外,如果我想创建另一个变量,请说UIButton
类型的“ b”,如何初始化它? 那真的是我想做的。
您不必再次初始化每个变量,因为每次创建类,结构或枚举的新实例时,它们的存储属性都具有初始值。
始终尝试提供默认值,而不要在初始化程序中设置值。 如果一个类或结构为其所有属性提供默认值,Swift会自动为您提供默认的初始化程序。
class Position { var x: Float = 0 var y: Float = 20 } let position = Position() // nice!
位置类是一个非常简单的数据构造-感觉Struct类型在这里更合适。
最终代码-使用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()
首先,每个class
名称均以capitalize
字母开头。 所以像这样改变你的node_类
class Node
{
var label: String
var coordinates: position_
init()
{
name = ""
coordinates = position_()
}
}
同时使用Position
更改您的课程position_
。
而不是使用_
尝试用capitalize
每个单词的第一个字符(例如PositionMarker
来写类名。
希望这会帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.