OO! 我加了个 {.gcsafe.} 可以通过了: import asyncnet, asyncdispatch var sock = newAsyncSocket() var f = connect(sock, "irc.freenode.net", Port(6667)) f.callback = proc (future: Future[void]) {.gcsafe.} = echo("Connected in future!") echo repr sock for i in 0 .. 50: var recvF = recv(sock, 10) recvF.callback = proc (future: Future[string]) = echo("Read ", future.read.len, ": ", future.read.repr) runForever()
如果不加的话,会出现 Error: Error: type mismatch: got (Future[system.void], proc (future: Future[system.void]){.locks: <unknown>.}) but expected one of: proc callback=(future: FutureBase; cb: proc ()) proc callback=[T](future: Future[T]; cb: proc (future: Future[T]))