Можете ли вы получить доступ к быстрой индексации как закрытие? - PullRequest
0 голосов
/ 05 декабря 2018

Учитывая следующий класс в swift:

public class Foo {
    public init () { }
    public subscript (index: Int) -> Int {
        get {
            return index
        }
    }

    public func intIdentity (val: Int) -> Int {
        get {
            return val
        }
    }
}

Очевидно, что я могу получить доступ к intIdentity как замыкание, используя что-то вроде этого:

let foo = Foo()
let clos = foo.intIdentity
print (clos (7)) // -> 7

Кроме того, я знаю, что могуоберните его в замыкание следующим образом:

let foo = Foo()
let clos = { (x:Int)->Int in return foo[x] }
print (clos (42)) // -> 42

Как получить прямой доступ к нижнему индексу в качестве замыкания?Разве это невозможно, потому что, хотя нижний индекс является синтаксическим сахаром поверх одной или двух функций, они неявны и не могут быть доступны явно?

...