在Smalltalk中获取方法参数

在Smalltalk中获取方法参数,smalltalk,pharo,Smalltalk,Pharo,如何打印特定方法的参数?参数没有类型,因此无法打印这些参数。似乎您想要打印提供方法名称和参数名称的方法头。您已经有了方法的名称,因此需要获取参数的名称。获取参数名称的唯一方法是从原始源字符串获取。下面是一种从源字符串中提取参数名称的好方法。在这个例子中,我得到了类对象中printOn:method的参数名 (Parser new parse: (Object sourceCodeAt: #printOn:) class: Object) arguments collect: [:each |

如何打印特定方法的参数?

参数没有类型,因此无法打印这些参数。似乎您想要打印提供方法名称和参数名称的方法头。您已经有了方法的名称,因此需要获取参数的名称。获取参数名称的唯一方法是从原始源字符串获取。下面是一种从源字符串中提取参数名称的好方法。在这个例子中,我得到了类对象中printOn:method的参数名

(Parser new parse: (Object sourceCodeAt: #printOn:) class: Object) arguments
  collect: [:each | each name]

在Pharo3中更容易:

(Object>>#printOn:) argumentNames

你能给我一个有多个参数的方法的例子吗?(Parser new parse:(magnize sourceCodeAt:#between:and:)class:magnize)arguments collect:[:each | each name]我需要为一个方法调用sourceCodeAt。但我有一个变量作为字符串的方法。我用“X”代替了X。作为一个方法实例,如何将其更改为X,以便能够对其调用sourceCodeAt?(解析器新解析:aString class:Object)参数collect:[:each | each name]