Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 这是为属性使用self属性的正确方法吗?_Ios_Oop_Swift - Fatal编程技术网

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

Ios 这是为属性使用self属性的正确方法吗?,ios,oop,swift,Ios,Oop,Swift,我知道Swift假设您在使用已知属性或方法名称时引用当前实例的属性或方法;然而,鉴于在Swift之前,self在代码中大量使用,我想确保我理解它的用法 class School { var numberOfBooks = 0 var numberofPens = 0 func buyBooks() { self.numberOfBooks++ } func buyPens() { self.numberOfPens++ } func readyF

我知道Swift假设您在使用已知属性或方法名称时引用当前实例的属性或方法;然而,鉴于在Swift之前,
self
在代码中大量使用,我想确保我理解它的用法

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"

那看起来很好(依我看)。为了更合理地理解Swift中的
self
,请参考以下问题:。

这是合理的,但我确实看到了一个错误。此声明

if self.numberOfBooks && self.numberOfPens >= 1
…无效。Swift不允许您将整数值视为布尔值

if self.numberOfBooks 

不是合法的,就像它在C、ObjuleC、C++和C.的各种C类语言中一样,被解释为“如果是Self.No.FooBooots!”0”。然而,Swift强制您明确。您必须书写

if self.numberOfBooks != 0

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