Одной из новых возможностей Swift 5 является то, что мы можем опустить слово return
, если свойство метода / вычисляемого состоит только из одного оператора return. Итак, это:
func f() -> Int {
return 1
}
можно упростить до:
func f() -> Int {
1
}
Так что, если мы развернем первый фрагмент кода, он станет:
var body: some View {
// the word "return" is implicitly added
return Text("Hello, World!")
}
Это вычисляемое свойство с именем body
.
Когда вы добавляете еще одну строку, вычисляемое свойство больше не состоит только из одного оператора return, поэтому теперь слово return
нельзя опускать. Компилятор пытается найти оператор возврата, но не может, следовательно, ошибка №1.
Поскольку компилятор не знает, что вы на самом деле привязываете к return Text(...)
, это сбит с толку, почему вы вызываете инициализатор и ничего не делаете с ним, следовательно, ошибка # 3.