2017-10-31 20 views
2

은, 다음이 기록됩니다모양의 GUI 정의에서 @ 기호의 의미는 무엇입니까? <a href="http://piumarta.com/software/cola/canvas.pdf" rel="nofollow noreferrer">Lessphic Tutorial</a> (6 페이지)에서 예를 들어

aShape := ShapedView withShape: ([email protected] corner: [email protected]). 
aShape := ([email protected] corner: [email protected]) shapedView. 

"@"는 무엇을 의미합니까? 그것은 x와 y 좌표를 갖는 점입니까? 이 표기법은 아마도 모르 프릭 (morphic)에서 시작되었다. 그러나 "@ 기호"는 Google에 어렵습니다.

+2

예, '포인트'입니다. Google에 추가 할 필요는 없습니다. 구현자를 찾거나 표현식 '0 @ 0'을 디버그하면 아이디어를 얻을 수 있습니다. –

+0

Morphic에서 시작된 것은 아니지만 이전에는 Smalltalk-80이었습니다. –

+0

@Leandro Caniglia Fantasitc! 한 줄의 답을 써 주시겠습니까? 따라서 답변 된 질문을 수락하고 닫을 수 있습니까? 고마워. – mrsteve

답변

3

하나가 등 @, +, = 같은 기호를 사용하여 혼동하고 예약로 생각 될 수 있지만 (즉, 컴파일러에 알려진), 스몰 토크에 그들 모두의 선택기입니다 정기적 인 방법. 즉, 예약 된 토큰이 아니라 예상 된 동작을 구현하는 유효한 메시지 선택 자 (대부분의 경우)입니다. 우리가 구현을 검색하는 경우 @의 특정 경우

, 우리가 일반적으로

@ aNumber 
    ^Point x: self y: aNumber 

로 구현 Number에서 하나를 발견 할 것이다 (Pharo 그러나,이다 과속 일까지, 대한 원시적있다

이 메시지의 이유는 Point 생성 방법이 덜 장황하므로 Point x: 200 y: 300 대신에 클라이언트가 200 @ 300이라고 써야하기 때문입니다.

이 패턴은 스몰 토크에서 흔히 사용됩니다. 이 [smalltalk] 태그에 몇 가지 질문이 있습니다. /은 같은 종류의 지름길입니다. 2/3(Fraction numerator: 2 denominator: 3) reduced과 같습니다. 기타 예로는 ReadStream on: 'hello world'에 대한 'hello world' readStream, Number readFromString: '234.5'에 대한 '234.5' asNumber 등이 있습니다.