科学计算语言Julia及MWORKS实践 课件 13-模块_第1页
科学计算语言Julia及MWORKS实践 课件 13-模块_第2页
科学计算语言Julia及MWORKS实践 课件 13-模块_第3页
科学计算语言Julia及MWORKS实践 课件 13-模块_第4页
科学计算语言Julia及MWORKS实践 课件 13-模块_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四、Julia语言进阶4.1模块定义:模块是一个独立的工作空间,在当前模型中引入了新的作用域。特点:模块内的变量不会与外界的变量发生冲突;不同模块内,相同名称的变量也不冲突。模块A模块B当前模块(顶层模块)变量a变量b变量a变量c变量a、b、c四、Julia语言进阶4.1.1创建模块创建模块:以moduleName…end形式创建一个模块。例如,创建名为MySin的模块计算正弦函数:moduleMySinx=0:0.01:2*pi;y=sin.(x);end

模块内部命令模块名称模块命名关键词模块结束关键词Syslab程序运行结果:Main.MySinMain是顶层模块四、Julia语言进阶4.1.1创建模块模块中可以包含函数、文件和子模块。moduleMyTrig_funexportMySin1,MyCos1MySin1(x)=sin(x);MyCos1(x)=cos(x);MyTan1(x)=tan(x);end创建名为MyTrig_fun的模块,包含3个函数。export:加载模块后,将函数MySin1和MyCos1导出到Main模块的工作区。3个函数Syslab程序运行结果为:Main.MyTrig_fun四、Julia语言进阶4.1.1创建模块创建名为MyModule1的模块,包含2个脚本文件。moduleMyModule1include("Sysfile1.jl");include("Sysfile2.jl");endinclude:加载脚本文件,程序中下划线表示文件链接,使用“Ctrl+单击”跳转打开该文件。。Syslab程序运行结果:Main.MyModule1四、Julia语言进阶4.1.1创建模块创建名为MyModule2.jl的脚本文件,包含SysModule1、SysModule2和SysModule3三个模块。moduleSysModule1mysin(x)=sin(x);end

moduleSysModule2include("Sysfile1.jl");x=1;end

moduleSysModule3include("Sysfile2.jl");x=2;endSyslab程序运行结果为:Main.SysModule3模块1模块2模块3命令行会输出最后一行语句执行结果最后一行语句为创建模SysModule3的结束关键词end。四、Julia语言进阶4.1.1创建模块创建名为MyModule3的模块,包含Sub1和Sub2两个子模块。Syslab程序运行结果为:Main.MyModule3子模块1子模块2moduleMyModule3moduleSub1exportmysinmysin(x)=sin(x);endmoduleSub2mycos(x)=cos(x);endend四、Julia语言进阶4.1.2加载模块用include加载MySin模块采用关键词include、import和using关键词加载模块。moduleMySinx=0:0.01:2*pi;y=sin.(x);end

include("MySin.jl")创建模块加载模块Syslab程序运行结果为:Main.MySinInclude将MySin模块加载到Main顶层模块。四、Julia语言进阶4.1.2加载模块用import或using加载MySin模块时,先用push!(LOAD_PATH,”.”)加载模块路径,然后加载模块。Syslab程序运行结果为:[Info:PrecompilingMySin[top-level]moduleMySinx=0:0.01:2*pi;y=sin.(x);end

push!(LOAD_PATH,".")importMySin创建模块加载模块加载模块路径用import或using首次加载模块时,对模块预编译,再次加载该模块无需编译。通过预编译减少程序运行时间。四、Julia语言进阶4.1.2加载模块注意:当一个文件包含多个模块或者文件名与模块名不一致时,只能使用include加载模块。例如:moduleSysModule1mysin(x)=sin(x);end

moduleSysModule2include("Sysfile1.jl");x=1;end

moduleSysModule3include("Sysfile2.jl");x=2;endmoduleMySinx=0:0.01:2*pi;y=sin.(x);end

MyModule2.jl文件MySin.jl文件重命名为MySin1.jl四、Julia语言进阶4.1.3导出列表using加载MyTrig_fun,export导出MySin1和MyCos1,并计算MySin1(0)。导出列表是指将模块中的变量和函数等导出到Main模块,根据变量和函数在模块中的路径导出,或者在模块内部用关键词export导出。moduleMyTrig_funexportMySin1,MyCos1MySin1(x)=sin(x);MyCos1(x)=cos(x);MyTan1(x)=tan(x);endSyslab模块加载程序及运行结果为:julia>

push!(LOAD_PATH,".")julia>usingMyTrig_funjulia>MySin1(0)0.0注意:使用import加载模块时,export关键词无效。四、Julia语言进阶4.1.3导出列表用import加载MyTrig_fun模块,导出并调用模块内部函数。julia>importMyTrig_funjulia>MyTrig_fun.MySin1(0)0.0julia>importMyTrig_fun:MySin1,MyTan1julia>MySin1(0)+MyTan1(0)0.0方式1:模块名.模块内部的函数名方式2:import模块名:函数名1,函数名2注意:“using模块名:模块名”与“import模块名”等价,例如usingMyTrig_fun:MyTrig_fun与importMyTrig_fun四、Julia语言进阶4.1.3导出列表使用as关键词对模块导出的变量重命名。moduleMyModuleAx=[1

2

3;4

5

6;7

8

9];endmoduleMyModuleBx=ones(3,3);endpush!(LOAD_PATH,".")usingMyModuleA:xasA_xusingMyModuleB:xasB_xA_x+B_xSyslab程序运行结果为:[Info:PrecompilingMyModuleA[top-level][Info:PrecompilingMyModuleB[top-level]3×3Matrix{Float64}:2.03.04.05.06.07.08.09.010.0两个模块的x导出到Main模块后变量名冲突。使用“using模块名:变量名as新变量名”重命名四、Julia语言进阶4.1.4调用模块的路径模块内部有多个模块时,需要根据子模块的路径加载到当前模块。Julia支持绝对路径和相对路径加载在模块。绝对路径一般为“父模块.子模块”。moduleMyModule3moduleSub1exportmysinmysin(x)=sin(x);endmoduleSub2mycos(x)=cos(x);endendSyslab程序运行结果为:julia>usingMyModule3.Sub1julia>mysin(0)0.0julia>usingMyModule3.Sub2julia>Sub2.mycos(0)1.0四、Julia语言进阶4.1.4调用模块的路径Syslab程序运行结果为:julia>usingMyModule5julia>mysin(0)0.0julia>MyModule5.Sub2.mysin_tan(0)0.0省略父模块名称,以“.子模块名称”相对路径调用子模块。moduleMyModule5moduleSub1exportmysin

#将mysin函数导出至父模块MyModule5mysin(x)=sin(x)endusing.Sub1

#将Sub1模块加载至父模块MyModule5exportmysin

#将Sub1模块中mysin函数导出父模块moduleSub2import..Sub1.mysin#相对路径,..与Main.MyModule5.等价exportmysin_tan

#将mysin_tan函数导出至父模块MyModule5mysin_tan(x)=mysin(x)+tan(x)endend

注意:未在父模块中使用using加载sub2,mysin_tan仍在Sub2模块中。四、Julia语言进阶4.1.5预编译机制使用using或import加载模块时,Syslab默认对模块预编译,即在模块运行前对程序进行编译以提升程序运行效率。特点1:首次加载模块时预编译并产生缓存文件。特点2:仅对模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论