表达式中的NSExpression自定义变量 [英] NSExpression custom variables inside expression
问题描述
这样的一个例子:
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屋!