문제
나는 (squeak를 사용하여) 겪고 있었다 더 나은 코드 발견 : SmallTalk 시리즈 용 볼링 Ron Jeffries와 나는 통과 할 수 없습니다. 제삼 기사.
새로운 클래스 (프레임이라고 함)가 생성되고 있으며, 이는 생성자의 인수로 배열을 취합니다.
Frame class>>new: anArray
^self new setRolls: anArray
Frame>>setRolls: anArray
rolls := anArray
간단한 테스트에서 이것을 실행하려고 할 때 :
testFrame
| frame rolls |
rolls := Array with: 5 with: 4.
frame := Frame new: rolls.
다음 오류가 발생합니다.
Alt Text http://files.getdropbox.com/u/120566/junk/error.png
배열로 프레임 객체를 초기화 할 수 있도록 #New 메시지를 어떻게 수정해야합니까?
해결책
새로운 메소드를 추가하지 못한 것 같아요 : 프레임 클래스에 올바르게 올바르게. 인스턴스 쪽 (프레임)이 아닌 클래스 쪽 (프레임 클래스)에 넣었습니까? 그렇게하려면 '클래스'버튼을 클릭하여 메소드를 추가하기 전에 다음을 추가하십시오.
다른 팁
당신은 정말로 무시하고 싶지 않습니다 new:
여기. new:
전통적으로 "이 정수 크기의 항목을 만들"용으로 예약되어 있으며, 그것이 당신에게 폭발하고 있다는 것은 놀라운 일이 아닙니다.
당신이 원하는 생성자의 종류에 대한 더 전통적인 이름은 fromArray:
, 또는 심지어도 fromCollection:
아마 당신이 원하는대로 일했을 것입니다.
제휴하지 않습니다 StackOverflow