如何在函数字段中使用 parent?

How can I use parent in function field?

我有这段代码(SwiftUI 汉堡菜单的 MenuItem,我循环使用 MenuItem 数组):

import Foundation

public class MenuItem
{
    var title: String
    var imagename: String
    var index: Int
    var action: () -> ()

    init(title: String, index: Int, action: @escaping () -> ())
    {
        self.title = title
        self.index = index
        self.action = action
        self.imagename = ""
    }

    convenience init(title: String, image: String, index: Int, action: @escaping () -> ())
    {
        self.init(title: title, index: index, action: action)
        self.imagename = image
    }

    func getTitle() -> String
    {
        return self.title
    }
}

    //need in output "ItemTitle: Title 1"
var menuitems = [
        MenuItem(title: "Title 1", index: 0, action: {
            print("ItemTitle: \(menuitems[self.index])")//i can't compile it
        }),
        MenuItem(title: "Title 2", index: 1, action: {
            print("ItemTitle: \(MenuItem.self.title)")//i can't compile it!
        }),
        MenuItem(title: "Title 3", index: 2, action: {
            print("ItemTitle: \(self.getTitle())")//i can't compile it!
    })]

我需要在函数字段 'action' 中使用字段 'index'、'imagename' 和 'title'。我该怎么做?

P.S.: 对不起我的英文)))

这是可能的解决方案(使用 Xcode 11.2 测试)

public class MenuItem
{
    var title: String
    var imagename: String
    var index: Int
    var action: (MenuItem) -> ()

    init(title: String, index: Int, action: @escaping (MenuItem) -> ())
    {
        self.title = title
        self.index = index
        self.action = action
        self.imagename = ""
    }

    convenience init(title: String, image: String, index: Int, action: @escaping (MenuItem) -> ())
    {
        self.init(title: title, index: index, action: action)
        self.imagename = image
    }

    func getTitle() -> String
    {
        return self.title
    }
}

    //need in output "ItemTitle: Title 1"
var menuitems = [
        MenuItem(title: "Title 1", index: 0, action: { item in
            print("ItemTitle: \(item.index)")//i can't compile it
        }),
        MenuItem(title: "Title 2", index: 1, action: { item in
            print("ItemTitle: \(item.index)")//i can't compile it!
        }),
        MenuItem(title: "Title 3", index: 2, action: { item in
            print("ItemTitle: \(item.getTitle())")//i can't compile it!
    })]