2015-07-04 3 views
2

Есть ли разница между вычисляемым свойством getter и переменной, которая возвращает значение? Например. есть ли разница между двумя следующими переменными?Getter вычисляемое свойство vs. переменная, которая возвращает значение

var NUMBER_OF_ELEMENTS1: Int { 
    return sampleArray.count 
} 

var NUMBER_OF_ELEMENTS2: Int { 
    get { 
     return sampleArray.count 
    } 
} 
+0

Почему название отличается от тела? – rounak

+0

Извините, мой плохой. Обновлено. – Daniel

ответ

5

Компьютер свойства с геттер и сеттер имеет такой вид:

var computedProperty: Int { 
    get { 
     return something // Implementation can be something more complicated than this 
    } 
    set { 
     something = newValue // Implementation can be something more complicated than this 
    } 
} 

В некоторых случаях сеттер не требуется, поэтому вычисленное свойство объявляется как:

var computedProperty: Int { 
    get { 
     return something // Implementation can be something more complicated than this 
    } 
} 

Обратите внимание, что вычисленное свойство всегда должно иметь геттер - так что невозможно объявить его только с помощью сеттера.

Так как часто бывает, что вычисляемые свойства имеют геттер только Swift упростит их реализацию путем исключения get блока, что делает код проще писать и легче читать:

var computedProperty: Int { 
    return something // Implementation can be something more complicated than this 
} 

Семантический нет никакой разницы между двумя версиями, поэтому в зависимости от того, что вы используете, результат будет таким же.

3

Они идентичны, поскольку оба определяют вычислимое свойство только для чтения. Но первое предпочтительнее, потому что оно короче и читаемо, чем последнее.