2013-05-20 24 views
4

我希望通过编程添加一个实例变量来使用浏览器重构现有类:如何使用重构浏览器添加实例变量?

| theClass className | 
className := #MyClass. 
theClass := (RBClass existingNamed: className) 
       model: (RBNamespace new classNamed: className; yourself); 
       yourself. 
theClass addInstanceVariable: 'testIVar' 

,但该类不与新实例变量修改,我缺少的是什么?

回答

6

你忘了执行你的重构。试试这个

| model className theClass iVarName | 
className := #MyClass. 
iVarName := 'testIVar'. 
model := RBNamespace new classNamed: className; yourself. 
theClass := (RBClass existingNamed: className) 
       model: model; 
       yourself. 
(RBAddInstanceVariableRefactoring 
     model: model 
     variable: iVarName 
     class: theClass) execute. 

你可能要为你的新实例变量添加authomatic加入方法(getter和setter)

(RBCreateAccessorsForVariableRefactoring 
     model: model 
     variable: iVarName 
     class: theClass 
     classVariable: false) execute