“ __lldb_expr_18”是什么意思?

时间:2019-06-16 04:27:58

标签: swift functional-programming lldb keypaths swift-keypath

我正在操场上使用功能齐全的Swift库,并对键路径进行一些操作。

当我跑步时: prop(\ User.favoriteFoods)<<<地图<<< prop(.name)

我得到: ((字符串)->字符串)->(__lldb_expr_18.User)-> __lldb_expr_18.User

The functions I'm using are defined as follows:

// Backwards composition
public func <<< <A, B, C>(_ f: @escaping (B) -> C, g: @escaping (A) -> B) -> ((A) -> C) {
    return { a in
        f(g(a))
    }
}

func prop<Root, Value>(_ kp: WritableKeyPath<Root, Value>) -> (@escaping (Value) -> Value) -> (Root) -> Root {
        return { update in
            { root in
                var copy = root
                copy[keyPath: kp] = update(copy[keyPath: kp])
                return copy
            }
        }
}

public func map<A, B>(_ f: @escaping (A) -> B) -> ([A]) -> [B] {
    return { $0.map(f) }
}

struct Food {
    var name: String
}

struct Location {
    var name: String
}

struct User {
    var favoriteFoods: [Food]
    var location: Location
    var name: String
}

let user = User(
    favoriteFoods: [
        Food(name: "Tacos"),
        Food(name: "Nachos")
    ],
    location: Location(name: "Brooklyn"),
    name: "Blob"
)

0 个答案:

没有答案