Arrays Swift类实例中的FUNC数组

Arrays Swift类实例中的FUNC数组,arrays,swift,Arrays,Swift,如何从Swift类实例中获取前缀为特定名称的函数数组,而无需硬编码这些函数的名称 e、 g 这些函数必须来自某个地方。它们不必在对话框中定义;它们可以是func steps()中的局部变量。例如: func steps() -> [(Session) -> Void] { var allSteps: [(Session) -> Void] = [] for i in 0..<3 { let currentStep: (Session) -&

如何从Swift类实例中获取前缀为特定名称的函数数组,而无需硬编码这些函数的名称

e、 g


这些函数必须来自某个地方。它们不必在
对话框中定义;它们可以是
func steps()
中的局部变量。例如:

func steps() -> [(Session) -> Void] {
    var allSteps: [(Session) -> Void] = []
    for i in 0..<3 {
        let currentStep: (Session) -> Void = { session in 
            print("Executing step \(i)")
        }
        allSteps.append(currentStep)
    }
    return allSteps
}
func steps()->[(会话)->Void]{
var allSteps:[(会话)->Void]=[]
对于0中的i..Void={session in
打印(“执行步骤\(i)”)
}
allSteps.append(当前步骤)
}
返回所有步骤
}

函数必须来自某个地方。它们不必在
对话框中定义;它们可以是
func steps()
中的局部变量。例如:

func steps() -> [(Session) -> Void] {
    var allSteps: [(Session) -> Void] = []
    for i in 0..<3 {
        let currentStep: (Session) -> Void = { session in 
            print("Executing step \(i)")
        }
        allSteps.append(currentStep)
    }
    return allSteps
}
func steps()->[(会话)->Void]{
var allSteps:[(会话)->Void]=[]
对于0中的i..Void={session in
打印(“执行步骤\(i)”)
}
allSteps.append(当前步骤)
}
返回所有步骤
}

我希望不必用allSteps变量来保存这些内容。我想要类似于XCTest的东西,它将运行所有以test为前缀的FUNC。我只想要funcs数组。啊,你想通过编程找到一个类中所有具有正确签名的函数(即
(Session)->Void
)?这有点棘手,我不太了解,但你要找的主题是“反射”,还有Swift的
Mirror
类:我希望不需要一个allSteps变量来保存这些。我想要类似于XCTest的东西,它将运行所有以test为前缀的FUNC。我只想要funcs数组。啊,你想通过编程找到一个类中所有具有正确签名的函数(即
(Session)->Void
)?这有点棘手,我不太了解,但你要找的主题是“反射”,Swift的
Mirror
类:Swift本身没有这种反射能力,您必须深入研究Obj-C运行时(但即使这样,我也不相信您能保证函数的顺序)。但所有这些看起来都是非常脆弱的设计(如果你添加了一个
stepsRemaining
属性怎么办?合成的Obj-C getter选择器会有一个前缀“step”)——我真的不明白指定数组有什么错。Swift本身没有那种反射能力,你必须深入研究Obj-C运行时(但即使这样,我也不相信你能保证函数的顺序)。但所有这些看起来都是非常脆弱的设计(如果你添加了
stepsRemaining
属性会怎么样?合成的Obj-C getter选择器会有一个前缀“step”)——我真的看不出指定数组有什么错。