这是用self访问实例变量的好方法吗?如果我经常使用

时间:2015-12-27 02:55:32

标签: swift

#!/bin/bash

a=1
iter=0
for ((iter; iter <= 1; iter++))
do
    a=1
    while [ $a -lt 4]
    do
      ./random_num $a
      a=`expr $a + 1`
    done

done

看看Persion类的问候方法。 我正在使用self.name让我明白“我现在使用实例变量而不是局部变量” 这是用self访问实例变量的好方法吗?如果我经常使用。

4 个答案:

答案 0 :(得分:5)

是否始终或仅在必要时使用self的问题是一个意见问题。关于Swift是否应该要求使用self访问实例变量和the swift-evolution mailing lista formal proposal that it should存在很多争论。该提议(由Swift核心团队成员制作)尚未在撰写本文时作出决定,但可能很快就会决定(在Apple员工休假后)。

https://www.google.com/search?q=swift-evolution+mandatory+self+site:lists.swift.org

https://www.google.com/search?q=swift-evolution+require+self+instance+site%3Alists.swift.org

更新

该提案遭到拒绝。 Swift不要求您使用self来访问实例变量。您仍然可以选择在任何地方使用它作为标准编码样式的一部分,也许有人会编写一个“linter”来验证其输入文件在任何地方都使用它。

答案 1 :(得分:1)

根据documentation

  

实际上,您不需要经常在代码中编写self。如果   你没有明确地写自己,Swift假设你是指   当你使用a时,到当前实例的属性或方法   方法中的已知属性或方法名称。

所以我认为只在需要时使用self来区分构造函数上的self.property = property等本地变量和实例变量。

答案 2 :(得分:0)

不,只在必要的时候使用自己。

  • 在封闭内部 - 编译器无论如何警告你。这是为了提醒您,您可以在闭包和自我之间创建一个引用循环。
  • 如果func中传递的参数与属性变量具有相同的名称或者自身的常量,那么您还必须应用self来解决歧义。

反对使用&#34; self&#34;的另一个论点: 如果你一直使用自己(没有明显的理由),那么你将忘记传递自我和创建参考周期的隐患。它也可以更容易地在课堂上进行文本搜索,以便自我&#34;找到参考周期的可能性。

除了所有正当理由之外它只是还原剂 - 无论如何,Xcode中的属性都有颜色突出显示。

答案 3 :(得分:0)

最好使用更适合OOPS的self关键字。