【问题标题】:Swift Closure to String快速关闭字符串
【发布时间】:2015-08-12 21:39:19
【问题描述】:

是否可以在 Swift 运行时将闭包解析为字符串?例如:

let y = 5
let myClosure = { (x: Double) -> Double in
    return x * 2 + y
}

应该给我"x * 2 + 5"(例如函数调用closureToString(myClosure))。有可能做这样的事情吗?顺便说一句,我的意思是在运行时,例如,y 可以从命令行读取。

我认为不可能,只是寻求确认^^谢谢;)

【问题讨论】:

  • 是的,如果你告诉我如何这是可能的:P
  • 我从未使用过它,但在 youtube 上观看了一些关于闭包的高级教程。我不完全记得我在哪里看到的,但你可以通过一点搜索找到
  • 你不应该忘记一个简单的基本概念,即闭包只不过是一个没有名字的函数。匿名函数。使用它来修改您的需求。我不想给你我想让你学习的代码。试试看。很有趣
  • @sriramhegde 问题是我不知道我该怎么做——无论是闭包还是函数。也许你可以给我一个链接或什么?无论如何我更喜欢学习,但没有任何材料我什么都学不到
  • 我可以但不清楚你想要什么,你想解析返回的值还是你想要它的格式为“x * 2 = y”

标签: string swift closures


【解决方案1】:
// 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

【讨论】:

  • 如果这是您要找的,请接受答案谢谢。
  • 是的,我还以为有其他方法,但这很好,谢谢伙计
【解决方案2】:

为什么在函数中需要它?你不能做这样的事情吗?

let y = 5
let myClosure = { (x: Double) -> Double in
    println("x * 2 + \(y), x = \(x)")
    return x * 2 + y
}

【讨论】:

  • 我想通过构造一棵树来解一个方程并用它做一些计算。但是,如果这可以与编译时类型检查而不是传递字符串甚至可能是正在使用的变量的字典一起工作(就像在代码中构造布局约束时所做的那样),那就太好了
  • 你想解析那个闭包的结果我的意思是返回值吗?如果您解析返回的值,您将解析它类似于 "\(10)"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 2019-07-20
  • 2019-04-30
  • 2013-01-20
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多