Я только начал изучать SwiftUI и пытался вызвать метод, который возвращает View, переменной типа View, но получил эту удивительную ошибку:
Cannot assign value of type 'some View'
(result of 'Self.frame(width:height:alignment:)')
to type 'some View'
(result of 'Self.fill(_:style:)')
Я хотел попробовать создать представление, просто чтобы посмотреть, что произойдет, понять, как SwiftUI приходит к измерениям для вещей.
let p = Path({ (path:inout Path) -> () in
path.addRect(CGRect(
x:0,
y:0,
width:geometry.size.width,
height:geometry.size.height
))
})
var result = p.fill(Color.red)
result = result.frame(width: 100, height: 100)
Я думаю, что здесь происходит то, что сначала я создаю struct Path
, и вызываю его метод fill, это в представлении. Когда я устанавливаю var result
на это возвращаемое значение, следует сделать вывод, что он имеет тип View
, что, как говорит XCode, делает.
![enter image description here](https://i.stack.imgur.com/2E5Mx.png)
Так как протокол View имеет метод frame(width:height:alignment:) -> some View
, я вызываю его, чтобы получить новый View. Теперь, поскольку result
подразумевается как View, и я присваиваю ему результат frame
, также View, разве это не должно быть законным?
(On другой StackOverflow вопрос кто-то прокомментировал «некоторый View - означает, что один конкретный тип, который соответствует View, не может быть однажды MenuView, а другой раз - CreateChannelView.» . Может ли это быть так? Если да, то я » Я также хотел бы знать, как увидеть, какой конкретный тип возвращает метод.)
![enter image description here](https://i.stack.imgur.com/e5Tlr.png)