在 Julia 中,如何为变量赋值和计算函数
In Julia, how to assign values to variables and evaluate the function
在用户的文本文件中,有一个字符串,例如“2*X+3*Y”。
我必须:(1) 将字符串解释为两个变量“X”和“Y”的函数; (2) 将这两个变量写入监视器,并要求用户输入变量的值; (3) 使用变量的这些值,我必须计算函数的值。
按照此https://groups.google.com/forum/#!topic/julia-users/NOSg-cpFklY,可以完成任务 (1):
vars(vs,_)=vs
vars(vs,s::Symbol)=isdefined(s) ? vs : push!(vs,s)
function vars(vs,e::Expr)
for arg in e.args
vars(vs,arg)
end
vs
end
extractvars(s::String)=vars(Set{Symbol}(),parse(s))
setvar=extractvars(“2*X+3*Y”) # then I have: Set([:X,:Y])
任务(2)和(3)如何完成?
vars(vs,_)=vs;
vars(vs,s::Symbol)=isdefined(s) ? vs : push!(vs,s);
function vars(vs,e::Expr)
for arg in e.args
vars(vs,arg)
end
vs
end
function anonyfun(s::ASCIIString) # create an anonymous function from string
e=parse(s);
a=:(()->$e);
vars(a.args[1].args,e);
eval(a),length(a.args[1].args); # return function, length of args
end
foo,len=anonyfun("2*X+3*Y"); ; # => (anonymous function), 2
foo([parse(Float64,readline()) for i=1:len]...) # binding user inputs
- 它很简单,但是参数类型是什么?
- 提高匿名函数性能:FastAnonymous
在用户的文本文件中,有一个字符串,例如“2*X+3*Y”。
我必须:(1) 将字符串解释为两个变量“X”和“Y”的函数; (2) 将这两个变量写入监视器,并要求用户输入变量的值; (3) 使用变量的这些值,我必须计算函数的值。
按照此https://groups.google.com/forum/#!topic/julia-users/NOSg-cpFklY,可以完成任务 (1):
vars(vs,_)=vs
vars(vs,s::Symbol)=isdefined(s) ? vs : push!(vs,s)
function vars(vs,e::Expr)
for arg in e.args
vars(vs,arg)
end
vs
end
extractvars(s::String)=vars(Set{Symbol}(),parse(s))
setvar=extractvars(“2*X+3*Y”) # then I have: Set([:X,:Y])
任务(2)和(3)如何完成?
vars(vs,_)=vs;
vars(vs,s::Symbol)=isdefined(s) ? vs : push!(vs,s);
function vars(vs,e::Expr)
for arg in e.args
vars(vs,arg)
end
vs
end
function anonyfun(s::ASCIIString) # create an anonymous function from string
e=parse(s);
a=:(()->$e);
vars(a.args[1].args,e);
eval(a),length(a.args[1].args); # return function, length of args
end
foo,len=anonyfun("2*X+3*Y"); ; # => (anonymous function), 2
foo([parse(Float64,readline()) for i=1:len]...) # binding user inputs
- 它很简单,但是参数类型是什么?
- 提高匿名函数性能:FastAnonymous