julia语言 调用 java_以编程方式/动态导入Julia中的模块
NOTE: 请参考用户1712368的(Jameson Nash,Julia dev)回答,这个discussion在julia-users邮件列表和Julia manual的这个条目中,要知道为什么这是 not 正确答案 .
这是使用Julia版本0.3.4的多重导入表达式的样子:
julia> parse("import Foo, Bar")
:($(Expr(:toplevel, :($(Expr(:import, :Foo))), :($(Expr(:import, :Bar))))))
julia> dump(ans)
Expr
head: Symbol toplevel
args: Array(Any,(2,))
1: Expr
head: Symbol import
args: Array(Any,(1,))
1: Symbol Foo
typ: Any
2: Expr
head: Symbol import
args: Array(Any,(1,))
1: Symbol Bar
typ: Any
typ: Any
这是一个以编程方式执行此操作的宏,它需要 modules 参数,该参数可以是 :call 或 :vcat Expr 或 Symbol ,必须评估为 Vector{Symbol} :
julia> macro dynamic_import(modules)
(modules = eval(modules))::Vector{Symbol}
ex = Expr(:toplevel)
for m in modules
push!(ex.args, Expr(:import, m))
end
return ex
end
你也可以概括这一行:
module_files = filter(r"^mod[0-9][0-9].jl$", readdir())
通过将其抽象为一个函数,该函数将 Regex 和 String 目录路径作为参数并返回 Vector{Symbol} :
julia> function needed_modules(rx::Regex, dir::String=".")
module_files = filter(rx, readdir(dir))
module_syms = map(m -> symbol(split(m, '.')[1]), module_files)
end
needed_modules (generic function with 2 methods)
所以你可以像这样使用它:
julia> @dynamic_import [:Mod01, :Mod02] # :vcat expression
julia> rx = r"^Mod[0-9][0-9].jl$";
julia> @dynamic_import needed_modules(rx) # :call expression
julia> modules = needed_modules(rx)
2-element Array{Symbol,1}:
:Mod01
:Mod02
julia> @dynamic_import modules # Symbol
最后,您可以将它全部包装到模块中,以便您可以使用DynamicImport:
Note: 当前我尝试从模块运行相同的示例时得到这个:
julia> using DynamicImport
julia> @dynamic_import [:mod01, :mod02]
julia> rx = r"^mod[0-9][0-9].jl$";
julia> @dynamic_import needed_modules(rx)
ERROR: rx not defined
julia> modules = needed_modules(rx)
2-element Array{Symbol,1}:
:mod01
:mod02
julia> @dynamic_import modules
ERROR: modules not defined
但它工作正常如果我在REPL中定义对象,我想这是一个涉及卫生的问题,这是我没有经历过的事情,所以我会在julia-users邮件列表中询问 .
julia语言 调用 java_以编程方式/动态导入Julia中的模块相关推荐
- 使用C语言调用mysql数据库编程实战以及技巧
今天编写使用C语言调用mysql数据库编程实战以及技巧,为其他IT同行作为参考,当然有错误可以留言,共同学习. 一.mysql数据库的C语言常用接口API 1.首先当然是链接数据库mysql_real ...
- CAD处理控件Aspose.CAD功能演示:在 C#中以编程方式搜索 DWG 图形文件中的文本
Aspose.CAD 是一个独立的类库,以加强 Java应用程序处理和渲染CAD图纸,而不需要AutoCAD或任何其他渲染工作流程.该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, ...
- 5个流水灯c语言程序,五种编程方式实现流水灯的单片机C程序
<五种编程方式实现流水灯的单片机C程序>由会员分享,可在线阅读,更多相关<五种编程方式实现流水灯的单片机C程序(5页珍藏版)>请在人人文库网上搜索. 1.五种编程方式实现流水灯 ...
- powershell 编程_如何使用PowerShell以编程方式更改Visual Studio中的默认浏览器,并可能使自己陷入困境...
powershell 编程 UPDATE: Why my own MacGyver solution was brilliant in its horrible way, the folks over ...
- java模拟滑动事件_java - 以编程方式在Android视图中触发滑动动作事件 - SO中文参考 - www.soinside.com...
我正在尝试以编程方式触发视图中的滑动.还有其他问题的答案,但他们没有为我工作.我还看到一些comments表示程序化的拖动/滚动因安全原因被禁用,这是真的吗?我很想找到一个明确的答案. 我尝试了以下方 ...
- python语言有几种编程方式_零基础自学python语言,有哪几种方法?龟叔说:这套教程带你入门...
第一我要说的是:你应该先了解python语言的起源,这句话对于自学python的小白来说,本身就是耍流氓. 我们从根源上分析这个问题,这个问题是(从零基础如何自学python编程)? 我的提取关键字: ...
- c语言调用同一目录下的函数,从C中同一目录中的另一个文件调用函数
这里有几件不同的事情.首先,我将介绍多个文件的基本编译是如何工作的. 如果你有多个文件,重要的是声明和函数定义之间的区别.定义可能是您在定义函数时习惯的定义:您编写函数的内容,如 int square ...
- java编程button_以编程方式在Java Swing中单击GUIbutton
即使button.doClick()者对button.doClick()满意,我正在寻找类似于设置助记符(即button.setMnemonic(KeyEvent.VK_A)后发生的事情. 你实际上可 ...
- 无需MS Office创建Excel!再C ++中以编程方式在Excel电子表格中创建图表
图表是简洁显示数据的绝佳工具.此外,它们以可视方式表示数据,从而更易于使用大量数据.在需要显示数据(例如每月预算比较或产品采用率)的情况下,图表可能会有所帮助.有鉴于此,本文将教您如何使用C ++在E ...
最新文章
- 【全网最精简】一行代码解决千万位以上的数字格式化为银行金额数字格式(如:¥1,000,000,000.00)
- Windows的端口列表(转载)
- golang中的空slice
- centos在线安装mysql
- linux修改默认发布目录,Linux环境更改Jenkins默认主目录
- 编程通用知识 系统编程
- Python的安装部署
- [Java] 蓝桥杯ALGO-64 算法训练 大小写判断
- FMEA-MSR 步骤五:风险分析(一)
- Markdown文件转pdf方法
- 2021水利规范工程建设项目施工监理规范工程量清单计价施工安全(共161份,931M)
- java小项目之简单聊天室
- 引用百度地图,隐藏百度地图logo
- SpringBoot 读取 jar 包中 BOOT-INF/lib 下的 jar包
- python 操作word 修改页眉与页脚
- 算法 - 随机密码生成算法
- checkboxlist控件用法
- markdown文本居中,段首缩进的方法
- 今天,小灰36岁了!
- Hibernate与JPA