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)

"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fibonacci Nim是一个游戏,与Fibonacci数列有密切关系。根据引用\[1\]的描述,先手胜利的条件是硬币数量不是Fibonacci数。换句话说,必败态构成Fibonacci数列。如果硬币数量是Fibonacci数,那么后手必胜。这是因为先手只能在Fibonacci数列的一堆取硬币,而后手可以根据上一个问题的子问题的解决方案取走该堆最后一枚硬币,从而剩下的一堆硬币也可以如此拆分,使得先手必败。如果硬币数量不是Fibonacci数,根据Zeckendorf定理,可以将硬币数量表示为不连续的Fibonacci数之和。在这种情况下,先手可以先取完最小的一堆硬币,而后手无法取完剩下的最少的一堆硬币,从而面对必败态。因此,先手可以在每一堆取到最后一枚硬币,从而获胜。\[2\]根据引用\[3\]的代码,可以通过判断硬币数量是否是Fibonacci数来确定先手或后手的胜利。如果硬币数量是Fibonacci数,输出"Second win";如果不是,输出"First win"。 #### 引用[.reference_title] - *1* *3* [斐波那契博弈](https://blog.csdn.net/iteye_6233/article/details/82396581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Fibonacci Nim(斐波那契尼姆)游戏](https://blog.csdn.net/darren0424/article/details/101639021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值