首页 > 解决方案 > “__lldb_expr_18”是什么意思?

问题描述

我正在操场上使用功能性 swift 库,并使用键路径进行一些操作。

当我运行时: prop(\User.favoriteFoods) <<< map <<< 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"
)

标签: swiftfunctional-programminglldbkeypathsswift-keypath

解决方案


推荐阅读