gpt4 book ai didi

nim-lang - 无法获取从 marshal 创建的 StringStream 来输出数据

转载 作者:行者123 更新时间:2023-12-01 15:43:26 27 4
gpt4 key购买 nike

假设我有这样的类型:

type
Foo = object of RootObj
f1: string
Bar = object of Foo
b1: string

我整理了一个这样的实例:

var bar: Bar
bar.f1 = "FOO"
bar.b1 = "BAR"

var s = newStringStream()
s.store(bar)

我可以直接读取它的数据:

echo s.data # outputs {"b1": "BAR", "f1": "FOO"}

但我无法使用 readLine() 或任何其他读取过程来读取它:

var line: TaintedString = ""
while s.readLine(line):
echo line

根本没有输出。


如果我不使用 marshal.store 创建数据,它就可以正常工作。

var s = newStringStream("foo\nbar")

var line: TaintedString = ""
while s.readLine(line):
echo line # outputs `foo` then `bar`

所以看来我错过了一些可能非常基本和明显的东西。知道那可能是什么吗?

最佳答案

流像文件一样工作;当您写入它们时,文件中的当前位置会随着写入而移动。您可以在调用之前和之后使用 echo s.getPosition 观察这一点。

如果从字符串创建新的字符串流,则位置将设置为零。

为了使其工作,只需使用

s.setPosition(0)

写入后。

关于nim-lang - 无法获取从 marshal 创建的 StringStream 来输出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com