nim中的文件导入方法

nim支持将一个程序分成若干个模块的概念。每个模块都有自己的文件.nim的一个源文件通常称为一个模块,模块可以使信息隐藏和分开编译。一个模块可以通过import语句访问另一个模块的标识符.

这里我们就介绍几种方法在一个模块中去访问另一个模块中的标识符:

#Moduel  importtest

var 
  str*:string="hello"     #`*`表示该符号为模块的输出符号,可以在其他模块中访问
  #a,b*:int=5             #这样定义,只是把b定义为了出口变量,a不是
  a*,b* :int=5            #a,b皆为输出符号
  c,d:float=5.5

proc addtest*(a,b:int):int=
  result=a+b

proc stringtest*(s:string):string=
  result = s & "world"

proc subtest*(c,d:float):float=
  result=c-d

echo subtest(c,d)

测试代码:

##导入文件只能导入当前目录以及其子目录下的文件

discard """

import importtest except addtest                         #导入importtest模块,除了addtest过程

echo stringtest(str)
echo addtest(a,b)                                        #Error: undeclared identifier: 'addtest'  没有导入importtest模块中的addtest,所以不能使用

"""

discard """

import importtest as it                                 #为了使用方便,可以为复杂的模块名定义一个别名

echo it.a                  #与echo a相同                 #这里也可以不使用别名调用标识符,若使用模块名则必须使用定义的模块别名,不可使用原模块名
echo it.stringtest(str)

"""

discard """

#from importtest import a,b,addtest,c     #无法导入一个模块中的非输出符号,此处c是importtest模块中的非输出符号 

from importtest import a,b,addtest

echo addtest(a,b)
#echo str                                 #没有导入str,这里不能使用
#echo c

"""

discard """

from importtest import nil

echo importtest.a                                       #必须使用模块名作为前缀
echo importtest.addtest(importtest.a,importtest.b)
echo importtest.c                                       #即使用模块名为前缀也无法访问一个模块中的非输出符号

"""


discard """
 
from importtest as it import nil                       #当使用别名时,只能用别名调用模块中的标识符,原模块名不能再使用

echo it.a
echo it.addtest(it.a,it.b)

"""

discard """

include importtest                                     #导入整个文件的内容,这样无法使信息隐藏

echo addtest(a,b)
echo stringtest(str)
echo c
echo subtest(c,d)

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值