Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在smalltalk中使用compile方法以及我可以使用哪些参数来调用它_Smalltalk_Squeak_Design By Contract - Fatal编程技术网

如何在smalltalk中使用compile方法以及我可以使用哪些参数来调用它

如何在smalltalk中使用compile方法以及我可以使用哪些参数来调用它,smalltalk,squeak,design-by-contract,Smalltalk,Squeak,Design By Contract,我正在尝试向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. 正如您所看到的

我正在尝试向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"

既然你提到这是一项家庭作业,我不会剥夺你发现像Smalltalk这样的动态系统的乐趣;)最好的导师是你的形象本身。对于许多信息(包括有问题的信息),在你的指尖下有一些有用的例子,可以给你提示如何发送它们

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

如果你不知道如何“浏览发件人”,有很多很好的参考资料可以教你。对我来说,“Pharo By Example”是我对像你这样的基本“我怎么做”问题的参考(如果你使用Squeak,“Squeak By Example”)。如果你愿意,这个“钓鱼竿”将为你提供更快的答案和更多的理解,依此类推;)


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

我不这么认为。这只是一个家庭作业。@Begueradj:有一个充满活力的国际Smalltalk社区,在美国、欧洲和南美洲有着特别强大的影响力。特别是,Pharo似乎在预示着它的新生命——请看一些野外的例子和一些嗡嗡声(包括一些编程的重量级人物)@Seandeigris非常感谢你的链接感谢你让我自己发现了一些东西,但我已经被困了很长一段时间了。你能详细说明你所说的“显示如何处理这些参数的squeak中的两个发送者”的确切含义吗?此外,我知道一切都是smalltalk是一个对象的消息,所以发送者是?发送者是“图像中发送有问题的消息的方法”(有一个小警告不适用于您的情况)。你有没有检查“通过示例发出吱吱声”?它解释得很清楚。我会给你一个提示,因为我没有在文本中看到它-快捷方式是CMD-n。如果您需要更多帮助,请解释您的操作步骤-例如,“我突出显示了消息并单击了CMD-N,但是…”确定,因此我深入研究了我的图像(我猜这是我的squeak系统浏览器)找到了行为,在其中我找到了不同版本的compile,在这些版本中,他们称为compile,我需要一组参数来寻找它。我试着和他们一起运行,但没用,之后我从代码中删除了对compile的所有修改,只是试着运行他们的compile,没有任何修改,但仍然得到了相同的错误,那就是无法理解#BitShift。这正常吗??作为他们的代码,它不应该起作用吗?伟大的进步!!请使用您使用所有参数尝试的语句更新您的问题,以便有人可以尝试重新创建相同的错误。如果没有看到确切的代码并可能实际运行它,很难说……我发现了导致错误的原因,我以错误的方式调用了compile,正确的方式是“ContractObject类compile:code”现在剩下的就是找到在哪里写我的新编译方法,我需要以某种方式使它重写compile in行为,所以我需要找到如何将它添加到contractObject类,因为我认为这样它就会重写它。