2014-12-09 42 views
0

我试图在smalltalk中为已定义的“编译”方法添加其他功能。 这里是我写的代码:如何使用smalltalk编译的方法以及我可以使用哪些参数调用它

compile: code notifying: requestor trailer: bytes ifFail: failBlock 
self log:(self substring: code delimiter: $?). 
super compile: code notifying: requestor trailer: bytes ifFail: failBlock. 

,你可以看到编译有4个参数,我只知道调用方法编译(这是代码字符串中)什么给第一个参数。

我添加的任何功能都不相关,我无法为我的方法运行任何测试,因为我不知道该给出最后3个参数。 所以我的问题在于如何使用正确的参数集来调用我的方法。

这是在写它一个测试,我卡住了:

co := ContractObject new. 

code := 'rate: aRate 
"?This is the Compiler Comment. Log me?" 
hourlyRate := aRate. '. 

co compile: code. "3 parameters missing here" 
+0

我不这么认为。这只是作业。 – 2014-12-09 12:31:19

+2

@Begueradj:有一个充满活力的国际Smalltalk社区,在美国,欧洲和南美洲有着非常强大的影响力。特别是,Pharo似乎预示着它的新生活 - 有关野生和http://forum.world.st/attachment/4794112/0/TwitterOnSmalltalk.pdf的一些示例,请参阅http://pharo.org/success嗡嗡声(包括一些编程的重击者) – 2014-12-09 12:47:49

+1

@SeanDeNigris非常感谢你的链接 – 2014-12-09 15:17:45

回答

2

既然你提到这是一个家庭作业,我不会剥夺你发现像Smalltalk的活,动力系统的乐趣;)最好的导师是你的形象本身。对于许多消息(包括有问题的消息),在您的指尖下有很多有用的示例,可以为您提供有关如何发送它们的线索。

要查找这些真实世界的示例,请查看相关消息的“浏览发件人”,并查看这些客户端如何处理您感到困惑的参数。在Squeak(你没有说哪个方言和Pharo没有这个信息),我看到两个发送者特别说明了如何处理这些参数。

如果你不知道如何“浏览发件人”,有很多很好的参考教你。对于我来说,“Pharo By Example”是我的基本“我该怎么办”的问题的参考资料(如果您使用Squeak的话,请以“例如吱吱叫”为例)。这个“钓竿”,如果你愿意的话,会给你提供更快的答案,并且更多的了解,那么SO上的begging for fish;)

n.b.当询问Smalltalk的问题时,请标记方言(例如Pharo,Squeak,Amber),因为并非所有的方言都有相同的信息(例如Pharo没有您询问的信息)

+0

感谢让我自己发现的东西,但我一直陷入了很长一段时间。 您能详细说明“吱吱声中的两个发送者如何处理这些参数”的意思吗? 更进一步,我知道所有的事情都是发送给对象的消息,所以发件人是? – 2014-12-09 13:39:19

+0

发件人是“图像中发送有问题的消息的方法”(有一个小问题不适用于您的情况)。你有没有检查“吱吱作响”?它很清楚地解释它。我会给你一个提示,因为我没有在文中看到它 - 快捷键是CMD-n。如果您需要更多帮助,请说明您被困在哪一步 - 例如“我突出显示了消息并单击了CMD-N,但是......” – 2014-12-09 14:06:40

+0

没问题,所以我钻研了我的图像(我猜这是我的吱吱声系统浏览器)并找到了行为,并在其中发现了不同版本的编译版本他们称我需要与我正在寻找的一组参数的编译。 我试着用它们运行它,但它没有工作,之后我从代码中删除了编译的每一个修改,并试图在没有任何来自我身边的改变的情况下运行它们的编译,仍然得到了同样的错误,即不明白#BitShift。 这是正常的吗?它不应该成为他们的代码吗? – 2014-12-09 19:59:21

相关问题