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中的模块相关推荐

  1. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧,为其他IT同行作为参考,当然有错误可以留言,共同学习. 一.mysql数据库的C语言常用接口API 1.首先当然是链接数据库mysql_real ...

  2. CAD处理控件Aspose.CAD功能演示:在 C#中以编程方式搜索 DWG 图形文件中的文本

    Aspose.CAD 是一个独立的类库,以加强 Java应用程序处理和渲染CAD图纸,而不需要AutoCAD或任何其他渲染工作流程.该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, ...

  3. 5个流水灯c语言程序,五种编程方式实现流水灯的单片机C程序

    <五种编程方式实现流水灯的单片机C程序>由会员分享,可在线阅读,更多相关<五种编程方式实现流水灯的单片机C程序(5页珍藏版)>请在人人文库网上搜索. 1.五种编程方式实现流水灯 ...

  4. powershell 编程_如何使用PowerShell以编程方式更改Visual Studio中的默认浏览器,并可能使自己陷入困境...

    powershell 编程 UPDATE: Why my own MacGyver solution was brilliant in its horrible way, the folks over ...

  5. java模拟滑动事件_java - 以编程方式在Android视图中触发滑动动作事件 - SO中文参考 - www.soinside.com...

    我正在尝试以编程方式触发视图中的滑动.还有其他问题的答案,但他们没有为我工作.我还看到一些comments表示程序化的拖动/滚动因安全原因被禁用,这是真的吗?我很想找到一个明确的答案. 我尝试了以下方 ...

  6. python语言有几种编程方式_零基础自学python语言,有哪几种方法?龟叔说:这套教程带你入门...

    第一我要说的是:你应该先了解python语言的起源,这句话对于自学python的小白来说,本身就是耍流氓. 我们从根源上分析这个问题,这个问题是(从零基础如何自学python编程)? 我的提取关键字: ...

  7. c语言调用同一目录下的函数,从C中同一目录中的另一个文件调用函数

    这里有几件不同的事情.首先,我将介绍多个文件的基本编译是如何工作的. 如果你有多个文件,重要的是声明和函数定义之间的区别.定义可能是您在定义函数时习惯的定义:您编写函数的内容,如 int square ...

  8. java编程button_以编程方式在Java Swing中单击GUIbutton

    即使button.doClick()者对button.doClick()满意,我正在寻找类似于设置助记符(即button.setMnemonic(KeyEvent.VK_A)后发生的事情. 你实际上可 ...

  9. 无需MS Office创建Excel!再C ++中以编程方式在Excel电子表格中创建图表

    图表是简洁显示数据的绝佳工具.此外,它们以可视方式表示数据,从而更易于使用大量数据.在需要显示数据(例如每月预算比较或产品采用率)的情况下,图表可能会有所帮助.有鉴于此,本文将教您如何使用C ++在E ...

最新文章

  1. 【全网最精简】一行代码解决千万位以上的数字格式化为银行金额数字格式(如:¥1,000,000,000.00)
  2. Windows的端口列表(转载)
  3. golang中的空slice
  4. centos在线安装mysql
  5. linux修改默认发布目录,Linux环境更改Jenkins默认主目录
  6. 编程通用知识 系统编程
  7. Python的安装部署
  8. [Java] 蓝桥杯ALGO-64 算法训练 大小写判断
  9. FMEA-MSR 步骤五:风险分析(一)
  10. Markdown文件转pdf方法
  11. 2021水利规范工程建设项目施工监理规范工程量清单计价施工安全(共161份,931M)
  12. java小项目之简单聊天室
  13. 引用百度地图,隐藏百度地图logo
  14. SpringBoot 读取 jar 包中 BOOT-INF/lib 下的 jar包
  15. python 操作word 修改页眉与页脚
  16. 算法 - 随机密码生成算法
  17. checkboxlist控件用法
  18. markdown文本居中,段首缩进的方法
  19. 今天,小灰36岁了!
  20. Hibernate与JPA

热门文章

  1. HDU 4740 The Donkey of Gui Zhou (模拟)
  2. 建议理解泛型集合-来源于QQ群
  3. leetcode 1185 python
  4. aspnet管理员用户登录_WINDOWS/LINUX系统修改管理员密码方法
  5. 杨辉三角(完整代码)
  6. C语言课后习题(35)
  7. Kyligence李扬:数据智能推荐成为技术发展新方向
  8. 不忘初心,恪守信条:微盟经历的从删库到跑路的数据灾难
  9. 万字总结Keras深度学习中文文本分类
  10. 在openEuler上做开发?这个大赛拿出30万寻找开源的yyds