2014-12-09 41 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

相關問題