簡體   English   中英

Smalltalk x raiseTo:y錯誤

[英]Smalltalk x raisedTo: y error

美好的一天! 我明天有報告,我正在審查Smalltalk。 我嘗試使用raisedTo:方法,但它給了我這個錯誤:

 MessageNotUnderstood: Character>>raisedTo:

這是我的代碼:

|x y z|
x := UIManager default request: 'P1: '.
y := UIManager default request: 'P2: '.
z := x raisedTo: y.
self inform: z.

請嘗試以下操作:

|x y z|
x := UIManager default request: 'P1: '.
y := UIManager default request: 'P2: '.
z := x asNumber raisedTo: y asNumber.
self inform: z asString.

注意選擇器#asNumber和#asString如何將對象轉換為適當的類型。

Smalltalk是動態類型的,但這並不意味着您可以將任何類型的對象傳遞給方法。

您的代碼在x上執行#raisedTo:。 但是,x是一個字符串,而不是在其中實現#raisedTo:的Number的子類。 因此,您最初的錯誤是由String無法理解#raisedTo:引起的。 (您可以使用“工具”菜單下的“方法查找器”檢查#raisedTo:在何處實現。)我通過將#asNumber發送給x來更正此問題。

同樣,您發送給#raisedTo:的參數也必須是數字。 這里的校正是相同的; 將#asNumber發送給y。

最后,#inform:需要一個字符串,而不是一個數字。 此處的更正是將#asString發送給該號碼。

請注意,#asString和#asNumber將如何更改將消息發送到的對象。 相反,將回答適當類型的新對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM