2012-10-03 3 views
3

Smalltalk에 관해서는 매우 신생하고 있으며, GUI로 매우 간단한 응용 프로그램을 작성하고 있습니다. 이 앱이 수행하는 모든 작업은 두 개의 입력 필드에서 두 개의 피연산자를 함께 추가하고 합계를 세 번째 읽기 전용 입력 필드에 표시합니다.Smalltalk은 선언 된 임시 변수를 인식하지 못합니다.

VisualWorks에서 이미 선언 한 임시 변수를 인식하는 데 문제가 있습니다.

선언 된 임시 변수가있는 모든 행을 강조 표시하려고합니다. 변수가 선언되지 않았다고 말합니다. temp, 인스턴스, 공유 등으로 선언하고 싶습니다 ... 메소드가 받아 들여질 수 있고 심지어 GUI로 실행할 때 읽을 수 있기 때문에 특히 이상합니다 (정수로 변수를 타입 변환하는 데 문제가 있음에도 불구하고).)하지만 선언 된 임시 변수가있는 행을 인쇄하거나 검사하려는 경우 해당 행을 인식하지 못한다고 표시하고이를이 또는 그 것으로 선언하고 싶습니다.

강령 :

add 
"adds two input fields" 

| op1 op2 result | 

op1 := #InputOperand1 value asInteger. 
op2 := #InputOperand2 value asInteger. 

result := op1 + op2. 

^result 

어떤 아이디어?

답변

6

문제는 선택한 텍스트 만 컴파일되고 평가된다는 것입니다. 한 줄만 선택하면 변수 선언은 컴파일 된 코드에 포함되지 않습니다. 전체 메서드 본문을 메서드 서명을 포함하지 않는 평가 용으로 선택하면 올바르게 작동합니다. 또 다른 옵션은 컴파일러가 프롬프트 할 때 "create temp"를 선택한 다음 저장 한 버전의 메소드로 되돌려 여분의 임시 선언을 제거하는 것입니다.

+0

아, 네 말이 맞아. 고맙습니다! – Gthoma2

+0

또한 원래의 질문에서 제안한 것과 같은 임시 결과로 재생 및 검사 할 때 디버거가 훨씬 더 편리하고 편리한 장소입니다. –

관련 문제