从helloworld开始,我试图通过制作一个应用程序来学习一些小马,该应用程序将用户输入的内容回显给用户。这行得通,除了 I 所在的那一行_env.out.print(_buffer)
。
class MyInput iso is StdinNotify
var _env: Env
var _buffer: Array[U8]
new iso create(env: Env) =>
_env = env
_buffer = Array[U8].create()
fun ref apply(data: Array[U8] iso) =>
for item in (consume data).values() do
if item == 0x0A then
_env.out.print(_buffer)
_buffer = Array[U8].create()
end
_buffer.push(item)
end
我得到的编译错误是:
argument not a subtype of parameter
_env.out.print(_buffer)
^
parameter type: ByteSeq val
be print(data: ByteSeq) =>
^
argument type: Array[U8 val] ref
_env.out.print(_buffer)
通过阅读github中的源代码,我认为Array[U8] 应该有资格作为 ByteSeq,所以我猜这是功能的问题。我已经尝试了一些东西,但我似乎无法将我的 ref Array 复制到 val Array 中。我得到的最接近的是let out: Array[U8] box = _buffer