我正在嘗試註釋掉我的任務中的所有代碼。但是,當我嘗試編譯(或者正在進行的任何事情;我真的不知道)時,就會嘗試在引號內編譯代碼。根據我正在使用的書(「On Smalltalk」--Winston),Smalltalk忽略了最初的雙引號,這個雙引號和下一個雙引號之間的所有字符,最後它也忽略了下一個雙引號。爲什麼這不起作用?正在編譯的註釋內的代碼
我試着把整個代碼放進一組雙引號,結果更糟。
我特別使用Smalltalk/X。我只想幫助解決導致評論錯誤的任何問題。
,我得到當代碼編譯是錯誤:
===>分析器[錯誤]:未聲明的變量:刪除 編譯/評估爲UndefinedObject 而讀C使用時:\ Users \用戶灰心\桌面\ blank.st 或靠近行3相對於組塊的開始]
===>分析器[錯誤]:未聲明的變量:彈出 編譯時/評估爲UndefinedObject 而讀C:\用戶\勸阻\桌面\ blank.st 在或接近第4行[相對於塊開始]
===>「[」意外。 (缺少「。」,「:」或之前的選擇器?) 編譯/評估UndefinedObject 而讀取C:\ Users \ Discouraged \ Desktop \ blank.st 或接近第5行[相對於塊開始]
===>意想不到在字符串 編譯/評估爲> UndefinedObject 而讀C使用時結束輸入:\用戶\泄氣> \桌面\ blank.st 或靠近行1相對於組塊的開始]
的代碼:
"
Build a stack based (RPN - Reverse Polish Notation) calculator for rational
numbers
Smalltalk at: #maxStackSize put: 32
Object subclass: #Stack
instanceVariableNames: 'stackArray stackTop'
classVariableNames: ''
poolDictionaries: ''
!
Stack class comment: '
Redundant stack class
'
!
!Stack methodsFor: 'initialize'!
new
^super new.
!
init
stackArray := Array new: maxStackSize.
stackTop := -1.
! !
"
"
!Stack class methodsFor: 'manipulating the stack'!
"
"
Removes the top entry from the stack.
pop
[self empty
ifTrue: [
Transcript
cr;
show: 'Stack is EMPTY!';
cr.]
ifFalse: [stackTop := stackTop - 1].
]
!
"
所以你不能註釋掉代碼,除非代碼正確編譯沒有註釋符號? 例如在Java中,如果我輸入 System.out.println(「我討厭Smalltalk」); 這是編譯 和 // System.out.println(「我討厭Smalltalk」); 這被視爲評論而不是編譯 Smalltalk不以這種方式表現嗎? 此外,我們被限制SmalltalkX [鏈接] http://www.exept.de/en/products/smalltalk-x.html。 –
你絕對可以註釋掉任何東西,甚至是不能編譯的代碼,只要確保你正確地關閉了註釋即可。所以,如果你用雙引號引出註釋,記住多餘的引號會關閉註釋,所以用一對引號重新打開它。這與「as」轉義基本相同,這與任何語言的打開/關閉註釋沒有什麼不同,例如'/ * Yo,* /這是註釋* /'在Java中無效,但由於Smalltalk最好是在瀏覽器窗口中作爲單獨的方法開發,因此從不需要評論大塊代碼 –
「所以你不能......」 - 請閱讀我的答案。 – blabla999