Swift闭包转字符串

3
在Swift中,是否有可能在运行时将闭包解析为字符串?例如:
let y = 5
let myClosure = { (x: Double) -> Double in
    return x * 2 + y
}

我希望能够得到"x * 2 + 5"(例如函数调用closureToString(myClosure))这样的内容。是否有可能做到这一点?顺便说一下,我是指在运行时,因为y可以从命令行读取。

我不认为这是可能的,只是想确认一下^^ 谢谢;)


是的,如果你告诉我怎么做就太好了 :P - borchero
我从未使用过它,但在YouTube上观看了一些关于闭包的高级教程。我不太记得我在哪里看到的,但你可以通过一点搜索找到它。 - Esqarrouth
你不应该忘记闭包只是一个没有名称的函数,也就是匿名函数的简单基本概念。利用它来修改你的需求。我不会给你代码,我希望你能自己学习。这很有趣。 - sriram hegde
@sriramhegde,问题是我不知道如何做到这一点 - 无论是使用闭包还是函数。也许你可以给我一个链接或什么的?我更喜欢学习,但如果没有任何材料就无法学习任何东西。 - borchero
我可以翻译,但是不清楚你想要什么,你是想解析返回的值还是想以“x * 2 = y”的格式呈现? - sriram hegde
@sriramhegde 只返回如上所述的解析值。 - borchero
2个回答

2
你为什么需要将其放在一个函数中?你不能像这样做吗?
let y = 5
let myClosure = { (x: Double) -> Double in
    println("x * 2 + \(y), x = \(x)")
    return x * 2 + y
}

我想通过构建一棵树来解决一个方程,并对其进行一些计算。但是,如果能够使用编译时类型检查而不是传递字符串甚至包含所使用变量的字典(就像在代码中构建布局约束时所做的那样)会更好。 - borchero
你想解析那个闭包的结果,也就是返回值吗?如果你解析返回值,你将会解析出类似于"\(10)"这样的内容。 - sriram hegde

2
// Im assuming y is a parameter along with x if not remove it .
// Im returning tuples to access both stringValue and DoubleValue
    let myClosure = { (x: Double, y:Double) -> (DoubleValue: Double, StringValue:String) in
        return (x * 2 + y,"\(x) * 2 + \(y)")
    }


let MyClosureResult = myClosure(2,8)
// to accessString Value
MyClosureResult.StringValue
// to access DoubleValue 
MyClosureResult.DoubleValue

如果这是您要寻找的内容,请接受答案。谢谢。 - sriram hegde
是的,我以为还有其他方法,但这个很不错,谢谢啊。 - borchero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接