在Nim

时间:2019-09-29 14:10:09

标签: arrays nim-lang

几天前,我发现了Nim语言,并开始使用面向初学者的专用指南https://narimiran.github.io/nim-basics来学习它。我想解决本教程中的一项练习,其中我必须构建一个空数组,该数组可以包含10个整数,然后使用循环将其填充为数字。但是,当我尝试编译代码时,出现错误:

$ nim c array.nim
Hint: used config file '/etc/nim.cfg' [Conf]
Hint: system [Processing]
Hint: array [Processing]
array.nim(4, 1) Error: '=' expected

此刻我的代码如下:

const
    a: array[10,int]

var b = 0
var c = 10

for i in a:
    a[b] = c*(b+1)
    inc b
echo a

似乎问题出在第4行的开头,因为编译器期望“ =”,因为它期望声明数组的内容。但是,根据我使用的教程,可以像我一样声明空数组,并在以后填充它们。我该怎么做才能正确地写出这个?

1 个答案:

答案 0 :(得分:3)

您必须使用var而不是const关键字,

如const doc中所述:

  

使用const关键字声明的不可变赋值必须在编译时(在程序运行之前)知道。

由于要初始化数组,因此在程序运行之前不知道这些值。

以下代码应该起作用:

var
    a: array[10,int]

var b = 0
var c = 10

for i in a:
    a[b] = c*(b+1)
    inc b
echo a