Wolfram mathematica MathLink中的数据包链:数据包总是严格有序的吗?
该文档没有明确说明返回的数据包的顺序 从内核通过Wolfram mathematica MathLink中的数据包链:数据包总是严格有序的吗?,wolfram-mathematica,mathlink,Wolfram Mathematica,Mathlink,该文档没有明确说明返回的数据包的顺序 从内核通过MathLink。很自然地认为(当 发送带有headEnterExpressionPacket的输入表达式并在标准模式下工作): 1) 下一个InputNamePacket之前的最后一个数据包始终是 ReturnExpressionPacket 2) 可能总是只有一个ReturnExpressionPacket和一个 outputnamepack一个EnterExpressionPacket 3) ReturnExpressionPacket始终是
MathLink
。很自然地认为(当
发送带有headEnterExpressionPacket
的输入表达式并在标准模式下工作):
1) 下一个InputNamePacket
之前的最后一个数据包始终是
ReturnExpressionPacket
2) 可能总是只有一个ReturnExpressionPacket
和一个
outputnamepack
一个EnterExpressionPacket
3) ReturnExpressionPacket
始终是outputnamepack
4) 在MessagePacket
之后,下一个数据包始终是textpack
with
该消息的所有内容
5) 在标准模式下,只有7种类型的返回数据包:inputnamepack
,outputnamepack
,ReturnExpressionPacket
,displayedpacket
,
MessagePacket
,textpack
以下哪项陈述是正确的?- 1可能无法保证
- 2绝对不是真的(评估:“2+2\n2+3”)李>
- 3可能是正确的,但可能无法保证
- 我相信4是真的
- 5是不能保证的
- 1可能无法保证
- 2绝对不是真的(评估:“2+2\n2+3”)李>
- 3可能是正确的,但可能无法保证
- 我相信4是真的
- 5是不能保证的
通常,您应该编写代码,使其不依赖于来自内核的数据包的顺序。在收到新的InputNamePacket之前,评估应被视为“活动”。OutputNamePacket应该更新一些变量。ReturnExpressionPacket应使用该变量的当前输出名称。如果您收到一个未知的数据包,只需忽略它并转到下一个数据包。示例1不正确:“foo=1;”将不会生成ReturnExpressionPacket。内核只返回一个InputNamePacket。例如,1不是真的:“foo=1;”将不会生成ReturnExpressionPacket。内核只返回一个InputNamePacket。可能需要注意的是,John Fultz已经在官方新闻组上详细说明了这个问题。可能需要注意的是,John Fultz已经在官方新闻组上详细说明了这个问题。