2016-10-12 3 views
3

나는 런타임에 평가되어야하는 여러 수학 표현식을 가지고있다. 현재 작업은 심볼을 동등한 값으로 대체하고 결과는 eval입니다. 그들은 새로운 글로벌 범위를 도입, 즉런타임에 사용자 모듈을 만드는 방법은 무엇입니까?

줄리아의

모듈은 별도의 변수 작업 공간이 있습니다 : 줄리아 - 랭 모듈의 정의를 참조

이제 (기존의 상징적 인 패키지를 수행 할 수있다). ... 모듈 이 다른 사람의 코드와 함께 사용될 때 이름 충돌에 대해 걱정할 필요없이 최상위 수준 정의 (일명 전역 변수)를 만들 수 있습니다.

그리고 메타 일을하는 줄리아의 힘을 가진

,
는 런타임 m=Module()에서 익명의 모듈을 만들고, 표현 eval(m, :(a+b))을 평가하는 범위로 사용하는 것이 가능하다 만약 내가 궁금하네요.
하지만 런타임 모듈에 변수를로드하는 방법을 찾지 못했습니다. 내가 함께 결과를 얻을 수 있지만 :

julia> ex=:(module mo; a=1; b=4; end) 
julia> eval(ex) 
julia> eval(mo,:(a+b)) 

나는 익명의 모듈을 사용하여, 더 많은 기능 방식을 선호합니다.
도움말.

답변

5

이 작동 :

julia> m=Module() 
anonymous 

julia> eval(m, :(a=5)) 
5 

julia> m.a 
5 

julia> eval(m, :(a)) 
5 

julia> eval(m, :(2a)) 
10 
관련 문제