문제

나는 (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: 아마 당신이 원하는대로 일했을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top