2017-12-21 3 views
2

Pharo + Squeak을 사용하여 스몰 토크를 배우고 있습니다. 나는 놀이터/작업 공간을 콘솔로 사용하려고 시도하고 거기에 모든 것을하는 방법을 알아 낸다. 내가 아직 알아 내지 못한 한 가지 방법은 클래스에 메서드를 추가하는 것입니다.시스템 브라우저가 아닌 놀이터/작업 공간을 사용하여 방법을 만드는 방법은 무엇입니까?

의 내가

Object subclass: #Cat 
    instanceVariableNames: '' 
    classVariableNames: '' 
    package: 'User Defined'. 

makeSoundCat에 메서드를 추가하려면 내가 시스템 브라우저

Cat browse. 

에서 찾을 거기

을 새로운 makeSound 방법을 만들 수 Cat 클래스를 생성한다고 가정 해 봅시다
makeSound 
    "Make Cat object make sound." 
    Transcript show: 'Meow!'. 

그런 다음 인스턴스를 생성 할 수 있습니다. 전자 Cat하고 그것을 makeSound 메시지

cat := Cat new. 
cat makeSound. 

를 보내고 예상대로 Meow!Transcript 스트림에 표시됩니다.

이제는 "콘솔"을 사용하여이 모든 작업을 수행하는 방법을 알지 못합니다. 예 책으로 Pharo에서이 방법을 참조에 대한 협약이 ClassName>>methodName를 사용하고 있음을 언급하며, 다음과 같이 코드 조각 (나는 아마 도살하고있다!)

Cat class>>makeSound 
    Transcript show: 'Meow!'. 

그것은 작동하지 않습니다있다 나는 그것을 놀이터/작업 공간에 입력합니다.

+1

시스템 브라우저에서 지금하고있는 것처럼 정상적인 방법으로 콘솔에서 모든 것을 수행하지 않습니다. – Mark

+0

* 놀이터/작업 공간을 콘솔로 사용해보고 거기에서 모든 작업을 수행하는 방법을 알아 봅니다. * 왜 "모든 것을"할 필요가 있습니까? – lurker

+0

@lurker 스몰 토크의 순도가 정말 좋고 스킨 토크가 스킬을 향상시키고 스몰 토크를 사용한다는 것을 알고 있습니다. 필자도 * 소스 파일 * 패러다임에 익숙하며 버전 제어 (re :'git')를 사용하려고합니다. – alpha

답변

4

이 구문은 주로 문서에 메서드를 삽입하는 데 사용됩니다. 시스템 브라우저 나 놀이터에서 직접 실행될 수있는 것이 아닙니다. 예를 들어 당신의 방법을 :

Cat>>makeSound 
    Transcript show: 'Meow!'. 

이는 방법 makeSound 클래스 Cat에 독자를 알려줍니다. 실행 파일이 아닙니다. 그리고 Cat>>makeSound이어야하며 Cat class>>makeSound이 아야합니다. 두 번째는 메서드가 클래스면에 있음을 나타냅니다.

당신은 그것을 컴파일 작업 공간에서 클래스에 메서드를 추가 할 수 있습니다 Cat>>#makeSound :

Cat 
    compile: 'makeSound 
    "Make Cat object make sound." 
    Transcript show: ''Meow!''.' 
    classified: 'actions'. 

당신은 직접 메시지 >>를 사용하여 클래스에서 컴파일 된 메소드 개체에 액세스 할 수 있습니다. 이 방법 개체가되면 당신은 또한 객체에 그것을 실행할 수 있습니다

(Cat>>#makeSound) valueWithReceiver: Cat new arguments: #(). 
+0

어떻게 작동합니까? 시스템 브라우저 ('Cat'->'Object'->'ProtoObject')에서'Cat' 계층 구조를 찾았지만'compile : classified :'메시지를 찾을 수 없습니다. (스몰 토크를 찾아서 컴파일하는 것이 도움이되지 않습니다. : /) – alpha

+2

''classile :': class :''class : 클래스 (인스턴스가 아님)가 이해하고있는 메시지이기 때문에 그 계층 구조에서'Cat' 계층 구조에 있지 않은 이유는'Cat' 인스턴스가 인식하는 선택자를 발견 할 것이고'Cat' (클래스 객체)가 응답합니다. –

3

을 당신은 "출력 파일"기능을 사용하여 생성 된 코드를 확인하면 느낌표를 사용하여 구문을 알 수 있습니다. 이것은 가장 읽을 수있는 구문이 아니며 사람이 읽거나 쓰는 것을 의미하지 않습니다.

Pharo는 Squeak과 마찬가지로 Playground, Debugger, Inspector 및 System Browser와 같은 GUI를 활용하여 매우 특수화 된 기능을 제공하는 Smalltalk-80 철학을 따릅니다. Smalltalk (및 Self와 같은 일부 파생 된 언어)는 코드에 관한 것이 아니라 객체 및 메시지에 대한 표현이기 때문에 일반적으로 시각적 인 표현을 여러 개 표현할 수 있습니다.

환경의 도구를 포함하여이 은유를 사용하여 모든 것이 정의된다는 것이 장점입니다. 따라서 개발 스타일에 맞게 쉽게 변경하거나 칼립소와 같은 다른 스타일을 설치하여 사용할 수 있습니다.

더 전통적인 스크립트 스타일 프로그램을 개발하려는 경우에도 시스템 브라우저를 사용하여 개발하고 몇 가지 간단한 실험을 위해서 놀이터에만 의지하는 것이 좋습니다. Pharo는 "헤드리스 (headless)"응용 프로그램을 배포 할 때 더 좋아 지므로 문제가되지 않습니다.

Git에 대해 걱정이된다면 Iceberg를 확인하십시오. 코드가 대부분 읽을 수있는 방식으로 직렬화되므로 diff가 Github에서 멋지게 보입니다.

관련 문제