我正在尝试在smalltalk中为已定义的方法“compile”添加其他功能。 这是我写的代码:
compile: code notifying: requestor trailer: bytes ifFail: failBlock
self log:(self substring: code delimiter: $?).
super compile: code notifying: requestor trailer: bytes ifFail: failBlock.
你可以看到compile有4个参数,我只知道在调用方法compile时给出第一个参数是什么(这是代码作为字符串)。
我添加的任何功能都不相关,我无法为我的方法运行任何测试,因为我不知道该给出最后3个参数。 所以我的问题是如何使用正确的参数集调用我的方法。
这是我在为它编写测试时陷入困境的地方:
co := ContractObject new.
code := 'rate: aRate
"?This is the Compiler Comment. Log me?"
hourlyRate := aRate. '.
co compile: code. "3 parameters missing here"
答案 0 :(得分:2)
既然你提到这是一项家庭作业,我不会剥夺你发现像Smalltalk这样的现实动态系统的乐趣;)最好的导师就是你的形象本身。对于许多消息(包括有问题的消息),在您的指尖下有一些有用的示例可以为您提供有关如何发送消息的线索。
要查找这些真实世界的示例,请查看相关邮件的“浏览发件人”,并查看这些客户端如何处理您感到困惑的参数。在Squeak(你没有说哪种方言和Pharo没有这个消息),我看到两个特别是发送者如何处理这些参数。
如果你不知道如何“浏览发件人”,有很多很好的参考资料可以教你。对我来说,“Pharo By Example”是我的基本“我如何”问题的首选参考,如果您使用的是Squeak,则可以使用“如何使用Squeak”。如果你愿意的话,这个“钓鱼竿”将为你提供更快的答案和更多的理解,然后begging for fish关于SO;)
n.b。在询问Smalltalk问题时,请标记方言(例如Pharo,Squeak,Amber),因为并非所有方言都有相同的信息(例如Pharo没有您询问的信息)