gpt4 book ai didi

iolanguage - io 赋值运算符不评估?

转载 作者:行者123 更新时间:2023-12-01 10:06:21 25 4
gpt4 key购买 nike

OperatorTable addAssignOperator(":", "myAssignMethod")
"foo" : "bar"

这给出了序列不响应“:”的错误(“:”仍被视为消息,而不是运算符)。

我认为它应该被评估为 myAssignMethod("foo", "bar")(因为 "foo"= "bar" 变成了 updateSlot("foo", "bar")),但事实并非如此。然而:

OperatorTable addAssignOperator(":", "myAssignMethod")
doString("\"foo\" : \"bar\"")

确实可以正常工作,myAssignMethod 会被调用。那么,如何让 doString() 期间对代码进行的任何处理在文件的主代码中工作?

最佳答案

:是一个有效的标识符,有特殊的含义。它用于指示 objective-c 绑定(bind)中的参数数量。强烈建议您选择其他运营商。

另请注意,所有运算符表修改都必须在加载和解析您使用它们的文件之前完成,因为运算符改组发生在编译时(加载文件时)而不是评估时。 REPL 隐藏了这个问题,因为它在您每次按下回车键时都会进行新的编译。

此外,如果您想查看某些内容将被编译成什么(对运算符(operator)有用),请将其包装在 message() 调用中。即,message(1 + 2) 将在 REPL 中产生 1 +(2)

关于iolanguage - io 赋值运算符不评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10144862/

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