如何在Julia中创建图书馆?

时间:2018-10-03 09:03:14

标签: julia

我需要知道如何在Julia中创建一个库以及在以后必须调用该库的地方。我来自C和matlab,看来Julia中没有有关实用编程的文档。 谢谢

1 个答案:

答案 0 :(得分:2)

如果您是Julia的新手,那么了解Julia对于loading code有两种机制会有所帮助。声明您“需要知道如何在Julia中创建库”意味着您最有可能希望创建Julia module docs,甚至可能要创建package docs。但是下面列出的第一种方法也可能对您有用。

在Julia中加载代码的两种方法是:

1。通过include("file_path_relative_to_call_or_pwd.jl") docs

包含代码
  

表达式include(“ source.jl”)使文件source.jl的内容在发生include调用的模块的全局范围内进行评估。

关于在何处搜索“ source.jl”文件:

  

相对于包含调用发生的文件,对包含的路径source.jl进行了解释。这样可以很容易地重新定位源文件的子树。在REPL中,包含的路径是相对于当前工作目录pwd()解释的。

包含文件是一种将代码从一个文件提取到另一个文件的简便方法。但是,包含文件中定义的变量,函数等成为当前名称空间的一部分。另一方面,模块提供了自己独特的名称空间。

2。通过import Xusing X docs

加载软件包
  

导入机制允许您加载程序包,即一个独立的,可重用的Julia代码集合,包装在一个模块中,并使生成的模块在导入模块内部以名称X可用。

关于这两种代码加载方法之间的区别:

  

代码包含非常简单:它只是在调用者的上下文中解析和评估源文件。包加载建立在代码包含的基础上,并且复杂得多。

关于位置,Julia搜索模块文件,请参见docs摘要:

  

全局变量LOAD_PATH包含Julia在调用require时搜索模块的目录。可以使用push!进行扩展:

push!(LOAD_PATH, "/Path/To/My/Module/")
  

将此语句放在文件〜/ .julia / config / startup.jl中将在每次Julia启动时扩展LOAD_PATH。另外,可以通过定义环境变量JULIA_LOAD_PATH来扩展模块的加载路径。

有关Julia模块的最简单示例之一,请参见Example.jl

module Example
export hello, domath

hello(who::String) = "Hello, $who"
domath(x::Number) = x + 5

end

,有关示例包,请参见here

旁注还有一种计划的(未来的)库功能,与您可能在其他语言中使用过的功能相似。参见docs

  

库(以后的工作):打包为Julia项目使用的已编译二进制依赖项(不是用Julia写的)。目前,这些文件通常是由deps / build.jl脚本在项目的源代码树中内置的,但是将来,我们计划使程序库成为由包管理器直接安装和升级的一流实体。