Мой код выглядит так. Мой класс имеет необязательный параметр var
var currentBottle : BottleLayer?
У BottleLayer есть метод jiggle()
.
Этот код, используя необязательную цепочку, компилируется в моем классе:
self.currentBottle?.jiggle()
Теперь я хочу построить замыкание, которое использует тот же код:
let clos = {() -> () in self.currentBottle?.jiggle()}
Но я получаю ошибку компиляции:
Не удалось найти элемент 'jiggle'
В качестве обходного пути я могу принудительно развернуть
let clos = {() -> () in self.currentBottle!.jiggle()}
или, конечно, я могу использовать полноценную необязательную привязку, но я бы предпочел не. Я признаю, что необязательная цепочка - это просто синтаксический сахар, но трудно понять, почему этот синтаксический сахар перестает работать только потому, что он в обработчике (хотя, конечно, может быть причиной, но в любом случае это сюрприз).
Возможно, кто-то другой ударил в это и имеет мысли об этом? Спасибо.