2014-12-09 10 views
0

smalltalk에서 이미 정의 된 "컴파일"방법에 추가 기능을 추가하려고합니다. 난 단지 (문자열로 코드) 메소드 컴파일을 호출 할 때 첫 번째 매개 변수를 제공하기 위해 무엇을 알고,smalltalk에서 컴파일하는 방법을 사용하는 방법 및 어떤 매개 변수를 호출 할 수 있습니까?

compile: code notifying: requestor trailer: bytes ifFail: failBlock 
self log:(self substring: code delimiter: $?). 
super compile: code notifying: requestor trailer: bytes ifFail: failBlock. 

당신이 컴파일이 4 개 매개 변수가 볼 수 : 여기에 내가 쓴 코드입니다.

내가 추가 한 기능이 무엇이든 관련이 없으며, 지난 3 개의 매개 변수를 제공해야하는 이유를 알지 못하기 때문에 내 방법에 대한 테스트를 실행할 수 없습니다. 그래서 여기 내 질문에 올바른 매개 변수 집합 내 메서드를 호출 할 수 있습니다. 그것에 대한 테스트를 작성하는 동안이 붙어있어

이된다

co := ContractObject new. 

code := 'rate: aRate 
"?This is the Compiler Comment. Log me?" 
hourlyRate := aRate. '. 

co compile: code. "3 parameters missing here" 
+0

나는 그렇게 생각하지 않는다. 이것은 숙제 일뿐입니다. –

+2

@Begueradj : 미국, 유럽 및 남미에서 특히 강력한 존재 인 활발한 국제 Smalltalk 커뮤니티가 있습니다. 특히 Pharo는 새로운 삶을 예고하고있는 것 같습니다. http://pharo.org/success 및 http://forum.world.st/attachment/4794112/0/TwitterOnSmalltalk.pdf를 참조하십시오. 버즈 (프로그래밍 중독 인 일부 포함) –

+1

@SeanDeNigris는 링크를 매우 고맙습니다. –

답변

2

이이 숙제, 나는 스몰 토크와 같은 라이브, 동적 시스템의 기쁨을 발견하는 당신을 박탈하지 않을 것입니다 언급 때문에 ;) 최고의 교사는 이미지 자체입니다. 문제의 메시지를 비롯한 많은 메시지의 경우 손가락 팁 바로 아래에 도움이되는 예제가있어이를 보내 줄 수있는 단서를 제공합니다.

이러한 실제 사례를 찾으려면 문제의 메시지를 보낸 사람을 찾아보고이 클라이언트가 혼란스러운 매개 변수를 처리하는 방법을 확인하십시오. Squeak (어떤 방언과 Pharo가 그 메시지를 가지고 있지 않은지 말하지 않았다)에서, 나는 그 매개 변수들을 다루는 방법을 보여주는 두 명의 발송자를 특별히 본다.

"보낸 사람 찾아보기"를 모른다면 많은 유용한 참조 자료가 있습니다. 나를 위해, "Pharo By Example"은 당신의 기본적인 "어떻게해야합니까?"(또는 "Squeak by Example"와 같은) 기본적인 질문에 대한 참고 자료입니다. 이 "낚싯대"는, 당신이 있다면, 빠른 답변과 더 많은 이해를 제공 할 것입니다, 그럼 begging for fish SO;)

n.b. 스몰 토크에 질문 할 때, 모든 방언이 동일한 메시지 집합을 가지고 있지 않기 때문에 (예 : Pharo, 당신이 물어 본 메시지가 없음)

+0

내 자신 만의 것을 발견하게 해줘서 고맙지 만, 오랫동안 붙어 있습니다. "매개 변수를 처리하는 방법을 보여주는 두 명의 발신자가 정확하게 무엇을 의미하는지 자세히 설명해 주시겠습니까?" 더 자세히, 나는 모든 것이 smalltalk가 객체에 대한 메시지이므로 발신자가 무엇인지 알고 있습니까? –

+0

발신자는 "문제의 메시지를 보내는 이미지의 방법"입니다 (귀하의 경우에는 적용되지 않는 작은주의 사항이 있음). "Squeak By Example"를 확인 했습니까? 그것은 그것을 아주 분명하게 설명합니다. 나는 텍스트에서 그것을 보지 못했기 때문에 당신에게 힌트를 줄 것이다 - 지름길은 CMD-n이다. 추가 도움이 필요한 경우 어떤 단계를 거쳐야하는지 설명하십시오. "나는 메시지를 강조 표시하고 CMD-N을 클릭했지만 ..." –

+0

오케이 그래서 내 이미지를 탐구했다. (나는 그것이 내짜리 시스템 브라우저라고 추측하고있다.) 그리고 행동을 발견하고, 이것들에서 다른 버전의 컴파일을 발견했다. 버전 그들은 내가 찾고 있던 매개 변수 세트로 필요한 컴파일을 호출했다. 나는 그것들과 함께 실행 해 보았지만, 코드를 수정하지 않고 모든 수정 사항을 제거한 후, 내 변경 사항없이 컴파일을 실행하려고 시도했지만 DoesNotUnderstand #BitShift와 동일한 오류가 발생했습니다. 정상입니까? 그것의 코드가되는 일을해서는 안 될까요? –