表达式中的NSExpression自定义变量 [英] NSExpression custom variables inside expression

查看:123
本文介绍了表达式中的NSExpression自定义变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近我发现了NSExpression类,我想知道是否有可能评估表达式中的自定义变量。



这样的一个例子:

  5 + 4 + MYVAR * 5 





如果这不存在,我会用循环和类似的,但希望那里



谢谢。

解决方案

$ pre $ let myInt = 4
let myFormulaInt =5 + 4 + myInt * 5
let intElements = [myInt:myInt]

let myResultInt = NSExpression(format:myFormulaInt).expressionValueWithObject(intElements,context:nil).integerValue

println(myResultInt)// 29


let myDouble = 2.5
let myFormulaDouble =5 + 4 + myDouble * 5
let doubleElements = [myDouble:myDouble]

let myResultDouble = NSExpression(format: MYF ormulaDouble).expressionValueWithObject(doubleElements,context:nil).doubleValue

println(myResultDouble)// 21.5

Xcode 8 GM•Swift 3

  let myInt = 4 
let myFormulaInt =5 + 4 + myInt * 5
let intElements:[String:Int] = [myInt:myInt]

let myResultInt = NSExpression(format:myFormulaInt ).expressionValue(with:intElements,context:nil)as! Int

print(myResultInt)// 29


let myDouble = 2.5
let myFormulaDouble =5 + 4 + myDouble * 5
let doubleElements:[String:Double] = [myDouble:myDouble]

let myResultDouble = NSExpression(format:myFormulaDouble).expressionValue(with:doubleElements,context:nil)as! Double

print(myResultDouble)// 21.5


Recently I have discovered NSExpression class and I am wondering is there a possibility to evaluate custom variables inside expression.

Something like this:

5+4+MYVAR*5

I would like to replace this MYVAR string with custom Double value.

If this don't exists, I will go with loops and similar, but hoping that there is a built-in (and faster) solution.

Thanks.

解决方案

let myInt = 4
let myFormulaInt = "5 + 4 + myInt * 5"
let intElements = ["myInt": myInt]

let myResultInt = NSExpression(format: myFormulaInt).expressionValueWithObject(intElements, context: nil).integerValue

println(myResultInt)   // 29


let myDouble = 2.5
let myFormulaDouble = "5 + 4 + myDouble * 5"
let doubleElements = ["myDouble": myDouble]

let myResultDouble = NSExpression(format: myFormulaDouble).expressionValueWithObject(doubleElements, context: nil).doubleValue

println(myResultDouble)   // 21.5

Xcode 8 GM • Swift 3

let myInt = 4
let myFormulaInt = "5 + 4 + myInt * 5"
let intElements: [String:Int] = ["myInt": myInt]

let myResultInt = NSExpression(format: myFormulaInt).expressionValue(with: intElements, context: nil) as! Int

print(myResultInt)   // 29


let myDouble = 2.5
let myFormulaDouble = "5 + 4 + myDouble * 5"
let doubleElements: [String: Double] = ["myDouble": myDouble]

let myResultDouble = NSExpression(format: myFormulaDouble).expressionValue(with: doubleElements, context: nil) as! Double

print(myResultDouble)   // 21.5

这篇关于表达式中的NSExpression自定义变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆