3

我在玩Io的Futures。我有一些方法可以做一些工作:

a := method(10 + 20)
b := method(20 + 30)
c := method(30 + 40)

我想同时运行它们。这按预期工作:

m := method(list(@a, @b, @c))

f := @m
writeln((f join(" + ")) .. " = " .. f sum)

但是,将创建字符串的工作移到方法m中不起作用:

m := method(
    s := list(@a, @b, @c)
    ((s join(" + ")) .. " = " .. (s sum))
)

f := @m
writeln(f)

这引起了Scheduler: nothing left to resume so we are exiting.

为什么?我有什么不明白的?

4

3 回答 3

1

这是交互式解释器中的一个错误。如果您将代码放在文件中,它应该可以正常工作。

于 2015-01-13T07:30:57.723 回答
0

我没有你的问题的答案,但我相信这个错误与你的问题无关,因为我遇到它在解释器中做更简单的工作。

Io> 1 proto
==> 0
Io> 5 proto
==> 0
Io> 0 proto
==> 0
Scheduler: nothing left to resume so we are exiting
  ---------
  Coroutine callStack                  A4_Exception.io 244
  Coroutine backTraceString            A4_Exception.io 274
  Coroutine showStack                  A4_Exception.io 177
  Coroutine pause                      A4_Exception.io 286

然后我再次尝试了该命令,它工作正常:

╰─➤  io
Io 20110905
Io> 0 proto
==> 0
于 2014-08-07T20:03:54.077 回答
-1

在 io 源代码目录中:

  1. rm ./libs/iovm/source/IoVMInit.c
  2. 打开./libs/iovm/io/A4_Exception.io并取消注释此行 //Exception raise("Scheduler: nothing left to resume so we are exiting")
  3. 重建并重新安装
于 2015-11-11T07:51:36.927 回答