1

文档没有说明清除从内核通过MathLink. 很自然地假设(当发送带有 head 的输入表达式EnterExpressionPacket并在标准模式下工作时):

1)下一个之前的最后一个数据包InputNamePacket总是 ReturnExpressionPacket

2)可能总是只有ReturnExpressionPacket一对一 OutputNamePacketEnterExpressionPacket

3)ReturnExpressionPacket永远是下一个OutputNamePacket

4)MessagePacket在下一个数据包之后总是TextPacket包含该消息的所有内容

5) 标准模式下只有 7 种返回数据包:InputNamePacket, OutputNamePacket, ReturnExpressionPacket, DisplayPacket, DisplayEndPacket, MessagePacket, TextPacket.

这些陈述中哪些是正确的?

4

1 回答 1

4
  • 1 可能无法保证。
  • 2 绝对不是真的(评估:“2+2\n2+3”)。
  • 3 可能是正确的,但可能无法保证。
  • 我相信4是真的。
  • 5 不保证。

通常,您应该编写代码以不依赖于来自内核的数据包的顺序。在您收到新的 InputNamePacket 之前,评估应被视为“活动”。OutputNamePacket 应该更新一些变量。ReturnExpressionPacket 应该使用该变量的当前输出名称。如果您收到一个未知数据包,只需忽略它并继续下一个数据包。

于 2011-02-21T17:52:31.797 回答