2009-06-19 5 views
1

Ron Jeffries가 Discovering Better Code: Bowling for Smalltalk Series을 통해 (스퀵을 사용하여) 통과 했으므로 third 문서를 통과 할 수 없습니다.배열을 사용하여 객체 초기화

생성자에서 배열을 인수로 취하는 새로운 클래스 (Frame이라고 함)가 만들어지고 있습니다.

Frame class>>new: anArray 
    ^self new setRolls: anArray 

Frame>>setRolls: anArray 
    rolls := anArray 

나는 간단한 테스트에서 이것을 실행하려고하면 :

alt text http://files.getdropbox.com/u/120566/junk/error.png

나는 #new 메시지를 수정하는 방법이 될 :

testFrame 
    | frame rolls | 
    rolls := Array with: 5 with: 4. 
    frame := Frame new: rolls. 

나는 다음과 같은 오류가 배열로 Frame 객체를 초기화 할 수 있습니까?

답변

3

새로운 방법을 추가하지 못한 것 같습니다. 프레임 클래스에 올바르게 추가하십시오. 클래스면 (Frame 클래스)에 놓고 인스턴스면 (Frame)에 놓지 않았습니까? 새 메소드를 추가하기 전에 '클래스'버튼을 클릭하십시오.

0

여기서는 new:을 무시하고 싶지 않습니다. new:은 전통적으로 "이 정수 크기의 항목 만들기"용으로 예약되어 있으며, 당신에게 불어 나고 있다는 것을 놀라게하지 않습니다.

원하는 생성자 종류에 대한 더 일반적인 이름은 fromArray: 또는 아마도 희망대로 작동했을 수도 fromCollection:입니다.

관련 문제