nim-lang - 如何从 Nim 中的过程返回数组

标签 nim-lang

我正在尝试从 Nim 中的过程返回一个数组。我的程序如下,

proc signGen*(n, f0, fs, multi=true): array[cdouble]
 =                                                 
  var signal: array[0..n, cdouble]
  if multi == true:
    for f in 1..int(n/2):
      for s in 1..n:
        signal[s] = sin(f*(2*PI)*s/fs)
        signal[s] += cos(f0 * f *(2*PI) * s / fs)
  else:
    for s in 1..n:
      signal[s] = sin(f*(2*PI)*s/fs)
  return signal

我收到以下错误,

 ~~> nim c -r src/stft.nim                        1 
Hint: used config file '/etc/nim/nim.cfg' [Conf]
Hint: used config file '/etc/nim/config.nims' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: stft [Processing]
Hint: lib [Processing]
Hint: math [Processing]
Hint: bitops [Processing]
Hint: macros [Processing]
/home/ruste/Development/nim_devel/projects/stft/s
rc/lib.nim(3, 44) Error: array expects two type para
meters 

感谢任何解决此问题的帮助。

最佳答案

Nim 中的数组是指固定大小的数组。因此,您需要提供一个编译时常量大小:array[4, cdouble]

如果你想要一个可变大小的数组,你需要使用seq:

proc signGen*(n, f0, fs, multi=true): seq[cdouble]=

关于nim-lang - 如何从 Nim 中的过程返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62279978/

相关文章:

arrays - 如何在 Nim 中连接两个数组?

nim-lang - 如何在 Nim 中将对象序列转换为 JSON?

profiling - 如何使用 nimprof?

nim-lang - 错误: expression has no address

opengl - 使用opengl围绕枢轴原点旋转

nim-lang - 为什么 Nim 编译时没有捕获赋值错误?

loops - 如何使用两个迭代器进行迭代

nim-lang - 如何在 Nim 中用糖解压参数中的元组?

enums - Nim : standard way to convert integer/string to enum

nim-lang - 最终从 STDIN : what is the correct way? 读取 gzip 压缩文件