我試圖去通過所有方法是使用順序塊在String變量x ='X'上調用sourceCodeAt。如何將其更改爲X?
an_object class methods do: [:n | ....]
自動獲取其參數特定類。 我需要撥打sourceCodeAt
的方法。但我有這個方法在一個變量作爲字符串。 'X'代替X.我如何將它作爲方法實例更改爲X,以便能夠對其調用sourceCodeAt?
我試圖去通過所有方法是使用順序塊在String變量x ='X'上調用sourceCodeAt。如何將其更改爲X?
an_object class methods do: [:n | ....]
自動獲取其參數特定類。 我需要撥打sourceCodeAt
的方法。但我有這個方法在一個變量作爲字符串。 'X'代替X.我如何將它作爲方法實例更改爲X,以便能夠對其調用sourceCodeAt?
好的,看看:#methods
發送給類對象(Behavior子類)的消息將返回一個CompiledMetod
實例的集合。我不知道得到的參數是什麼意思,但(至少在Pharo3中),您可以發送#argumentNames
到CompiledMetod
以獲取參數的名稱。否則,您可以發送#selector
以獲取表示方法的選擇器(名稱)的符號。當然,當你打印它時,你會得到類>>方法,因爲它的定義類似#printOn:
方法CompiledMetod
類。
如果你想獲得一個方法的源代碼,只需要問一個方法。 E.i:
an_object class methods do: [ :method | method sourceCode ....]
我使用下面的方法:an_object類的方法是:[:n |當我打印n我得到:LinkedList2 >>#RemoveAnElement :.雖然,我只需要獲取方法名稱#RemoveAnElement。我將方法名稱傳遞給方法:sourceCodeAt以獲取參數。但是我沒有成功,因爲我可以發送'#RemoveAnElement'而不是#RemoveAnElement。 – Asan
@Asan我已經擴大了答案 – Uko
我用這個obj:= x asSymbol其中x是作爲一個字符串的方法名稱,它的工作原理。我現在試圖自動提取方法的標題。通過閱讀該方法的第一行,從源代碼中獲取它們會更好嗎? – Asan
如果您已經有一個字符串中的源代碼,則不需要「sourceCodeAt:」。只要使用你有的字符串。 sourceCodeAt:方法獲取現有方法的源代碼並返回一個字符串。如果你已經有了包含源代碼的字符串,就使用它。
謝謝..真的爲什麼不:)。 – Asan
老實說,我不明白X是怎麼回事。也許你可以證明一些例子? – Uko
我使用以下方法:an_object類的方法做到:[:n | 當我打印n我得到:LinkedList2 >>#RemoveAnElement :.雖然,我只需要獲取方法名稱#RemoveAnElement。我將方法名稱傳遞給方法:sourceCodeAt以獲取參數。但我沒有成功! – Asan
我使用了這個obj:= x asSymbol其中x是方法名稱作爲一個字符串,它的工作原理!我現在試圖自動提取方法的標題。通過閱讀該方法的第一行,從源代碼中獲取它們會更好嗎? – Asan