我有一个问题。我知道这可以在Ruby中完成,不确定Swift,但从未做过类似的事情。 我正在研究的是一个与此类似的程序:如果用户在TextView“a + b”中写入,我的代码应该详细说明变量“a”和“b”之间的总和值。 我的意思是,如何从字符串中获取变量名?它有可能吗?
如果不是,我会使用开关(变量名称有限),但我需要将变量“连接”到用户编写的变量。在这个例子中,如果用户写“a + b”,我的sum函数就像“sum(par1,par2)”,那么,我怎样才能使变量“par1”指向“a”和“par2”指向“b”?我可以用指针做到这一点吗?还有其他办法吗?
我不确定我是否清楚,但很难解释
答案 0 :(得分:1)
检查一下。您可以使用NSExpression
和KVC
。
class myclass:NSObject {
var a = 10;
var b = 20;
override init() {
super.init();
}
}
var obj = myclass();
// Expression from user
var expr:NSString = "a+b" ;
//Operators..
let opSet = NSMutableCharacterSet()
opSet.addCharactersInString("+-*/");
let components:NSArray = expr.componentsSeparatedByCharactersInSet(opSet)
let uniqueChars:NSSet = NSSet(array: components)
for variable in uniqueChars
{
expr = expr.stringByReplacingOccurrencesOfString ( variable as String,
withString : NSString(format: "%d", obj.valueForKey(variable as String) as Int),
options : NSStringCompareOptions.LiteralSearch,
range : NSMakeRange(0,expr.length) );
}
var result: AnyObject = NSExpression(format: expr).expressionValueWithObject(nil, context: nil)
print (result);