这是使用属性的self属性的正确方法吗?

时间:2015-04-04 00:46:14

标签: ios oop swift

我知道Swift假定您在使用已知属性或方法名称时引用当前实例的属性或方法;但是,我想确保我理解self的使用,因为它在Swift之前的代码中被大量使用。

class School {
  var numberOfBooks = 0
  var numberofPens = 0

  func buyBooks() {
    self.numberOfBooks++
  }

  func buyPens() {
    self.numberOfPens++
  }

  func readyForSchool() {
    if self.numberOfBooks && self.numberOfPens >= 1 {
      println("I am ready for school")
    } else {
      println("I need to buy school materials")
    }
  }
}

var preparedForSchool = School()
preparedForSchool.buyBooks()
preparedForSchool.buyPens()
preparedForSchool.readyForSchool() \\returns "I am ready for school"

2 个答案:

答案 0 :(得分:1)

看起来很好(IMO)。要更全面地了解Swift中的self,请参阅此问题:What is "self" used for in Swift?

答案 1 :(得分:1)

这是合理的,但我确实看到一个错误。这句话

if self.numberOfBooks && self.numberOfPens >= 1

......无效。 Swift不允许你将整数值视为布尔值。

if self.numberOfBooks 

不合法,就像它在C中一样。在C,Objective-C,C ++和各种其他类C语言中,它们将被解释为“if self.numberOfBooks!= 0”.Swift强迫你成为然而,显而易见。你必须写

if self.numberOfBooks != 0

if self.numberOfBooks >= 1 && self.numberOfPens >= 1

if self.numberOfBooks != 0 && self.numberOfPens >= 1