Найти в Дзене

var body: some View, что это за свойство?

Оглавление

Подписывайся на телеграм - RIABOV_DEV

https://t.me/riabov_dev

Чтобы понять, что из себя представляет свойство "var body: some View" нам нужно понять следующее:

  1. Computed Property
  2. Getter/Setter
  3. Opaque Types/Some

1. Computed Property

Здесь все просто, есть вычисляемые переменные и невычисляемые

Невычисляемые свойства - такие какие они есть. Такие, как вы их задали. Эти свойства могут быть или переменными свойствами хранения (начинаются с ключевого слова var), или постоянными свойствами хранения (начинается с ключевого слова let).

Грубо говоря, значение свойства var ты можешь изменить, а let - нет, это константа.

Теперь вернемся к вычисляемым свойствам.

Чтобы создать вычисляемое свойство, поместите открывающую фигурную скобку { после самого свойства свойства.

Представим, что у нас есть переменная которая вычисляет название файла.

-2
-3

Почему при попытке изменить значение нашей вычисляемой перменной мы получаем ошибку?

2. Getter/Setter

Вычисляемые свойства могут также могут использовать геттер (get) и сеттер (set):

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

Обратите внимание констукция { get set } говорит о том, что свойство должно уметь менять значение т.е. константой его объявлять нельзя, только переменной. И как обсуждалось ранее, get разрешает использовать константы.

Использовать set без get нельзя.

У вычисляемого свойства по умолчанию всегда есть getter. У getter есть return который возвращает значение. Т.е. setter у вычисляемого свойства поумолчанию нет, из этого и наша ошибка.

-4

Чтобы исправить нашу ошибку, добавим к нашему свойству setter.

-5

Далее мы можем упростить:

-6

Ничего не напоминает?

-7

3. Opaque Types

Ключевое слово some появилось в Swift 5.1. Оно используется вместе с протоколом для создания Opaque Type, представляющего что-то, что соответствует определенному протоколу.

Т.е. свойство var body: some View должно возвращать какое-то одно view, которое соответсвует протоколу View. Всё.

Что если у нас в свойстве var body несколько View? Для этого существуют контейнеры, каждое subview рисуется внутри родительского вью, и так далее вверх по иерархии до первого родительского вью.

Один контейнер может содержать до 10 элементов включительно.

-8

Чтобы решить эту проблему мы можем добавить ещё один контейнер внутри существующего.

-9
-10

Подписывайся на телеграм - RIABOV_DEV

https://t.me/riabov_dev

//статья является частью моей электронной книги//

Пример кода и другие статьи в моей электронной книге:

var body: some View