Nim 在数组中使用输入无法在编译时求值
Nim use a input in arrays cannot evaluate at compile time
我几天前才开始使用 nim,但无法弄清楚为什么我总是收到此错误:错误:无法在编译时求值:threadcount
import strutils
proc thread_test()=
echo "test"
echo "How many threads do you want to use?"
var threadcount = readLine(stdin)
echo threadcount
var threads: array[threadcount, Thread[void]]
for i in 0..high(threads):
threads[i].createThread(thread_test)
joinThreads(threads)
echo "i"
array
的第一个类型参数必须是编译时常量(例如,在程序编译时知道,而不是在运行时知道)。所以不可能从输入中读取大小并将其用于 array
- 你需要有一个像 seq
.
这样的动态容器
对此没有特别的解决方法 - 您可以将线程数存储在 const threadCount = 12
中,但它也必须是一个编译时常量。
使用 seq
您的代码将是
import strutils
proc thread_test()=
echo "test"
echo "How many threads do you want to use?"
var threadcount = readLine(stdin)
echo threadcount
var threads: seq[Thread[void]]
for i in 0..high(threads):
threads.add createThread(thread_test)
joinThreads(threads)
echo "i"
我几天前才开始使用 nim,但无法弄清楚为什么我总是收到此错误:错误:无法在编译时求值:threadcount
import strutils
proc thread_test()=
echo "test"
echo "How many threads do you want to use?"
var threadcount = readLine(stdin)
echo threadcount
var threads: array[threadcount, Thread[void]]
for i in 0..high(threads):
threads[i].createThread(thread_test)
joinThreads(threads)
echo "i"
array
的第一个类型参数必须是编译时常量(例如,在程序编译时知道,而不是在运行时知道)。所以不可能从输入中读取大小并将其用于 array
- 你需要有一个像 seq
.
对此没有特别的解决方法 - 您可以将线程数存储在 const threadCount = 12
中,但它也必须是一个编译时常量。
使用 seq
您的代码将是
import strutils
proc thread_test()=
echo "test"
echo "How many threads do you want to use?"
var threadcount = readLine(stdin)
echo threadcount
var threads: seq[Thread[void]]
for i in 0..high(threads):
threads.add createThread(thread_test)
joinThreads(threads)
echo "i"