这种结构中使用的init方法令人困惑?

时间:2015-08-26 19:05:13

标签: swift struct initialization

我不明白为什么self.rate = rate是必要的....已经rate已经声明并知道它是Double .... init方法据说初始化rate但它没有为它设置一个实际的double值....那么rate如何被“初始化”.....在{之前使用通配符(_)是什么意思{1}}参数?

我还可以输入rate = 0.0而不是使用初始化方法吗?使用init()的能力是什么?

rate

5 个答案:

答案 0 :(得分:0)

$('main').scrollTop() 是struct自己的属性; <main>(在self.rate方法内)是方法的参数,因此该方法将属性初始化为参数的值。这可能会令人困惑,但以下方法会产生同样的效果:

rate

至于下划线,它在这里没有任何功能。它通常表示您在调用方法时可以跳过参数名称,但第一个参数始终如此。甚至在documentation:

的注释中也提到了这一点
  

因为默认情况下第一个参数省略了它的外部参数名称,所以显式写下划线是无关紧要的。

答案 1 :(得分:0)

如果初始化“每小时里程数”时不需要“费率”,那么您不需要这样做。您可以这样申报费率:

var率:双倍?

在你知道它已被初始化之后解开它(如果速率!= nil - &gt;用速率做某事!)

答案 2 :(得分:0)

self.rate是结构的自己的领域; rate(在init方法内)是方法的参数。 尽量不要使用0或其他,参数会建立堆栈溢出,这可能是方法错误。

答案 3 :(得分:0)

如果初始化不需要外部名称,则使用下划线“_”覆盖默认行为。并且,self.rate是struct拥有的属性,该方法初始化参数的属性。

答案 4 :(得分:0)

  

为什么self.rate = rate是必要的....不是已经声明的速率并且已知它是双重的......初始化方法可以初始化速率但是它没有为它设置实际的双精度值。 ..如何率“初始化”

rate作为参数传递给构造函数。完成构造函数后,参数值将丢失。我们需要将该值赋给实例变量,否则值将丢失。实例变量和参数具有相同名称的事实不是一个规则,但它很常见。 self.前缀用于区分参数和实例变量。

  

还有什么意思在速率参数之前使用通配符(_)?

Swift方法还有一个外部参数名称,在调用方法时必须指定该名称。如果您不想在构造函数中使用外部参数,则必须使用_忽略它。

  

我也可以输入rate = 0.0而不是使用初始化方法吗?使用init()的能力是什么?

是的,你可以这样做,但重点是构造函数的调用者可以指定值。初始化程序通常用于为常量变量(初始化后无法更改)或私有变量设置默认值。初始化程序(构造函数)的重点是使对象处于有效的默认状态。