2016-10-18 3 views
0

저는 현재 스몰 토크에서 과제를 수행 중이며, 언어 이해를 얻는 동안 약간 혼란스러워서 찾고 있습니다. 어떤 방향.성적표에 출력되지 않는 것 같습니다. [Smalltalk]

print 
    Transcript show: 'Hello my name is: ' , self theName printString; cr 

내가 처음에 조건을 넣으면

printNew 
     (age < 50) ifTrue: [ Transcript show: 'Hello my name is: ', self theName, 'and I am old' printString ]; cr 

내가 할 수없는 것 같은 것 같습니다 : 일반적으로

내가 사용하는 것이 Pharo의 성적 증명서에 인쇄 스크립트에 인쇄하기위한 printNew 메서드. 미리 감사드립니다.

+1

그래서 '연령'의 가치는 무엇입니까? –

답변

2

나를 더 잘 이해하기 위해 표현의 형식을 보자

(age < 50) 
    ifTrue: [ 
    Transcript show: 
     'Hello my name is: ', self theName, 'and I am old' printString]; 
    cr 

차례로 스몰 토크 ifTrue: [<something>]에 불과하다

(age < 5) msg; cr 

때문에의 구조를 가지고

(age < 5) ifTrue: [<something>]; cr 

처럼 보인다 그러나 메시지. 지금 실수가 보이십니까? 캐스케이드 기호 ;은 먼저 msgBoolean 표현 (age < 5)으로 보낸 다음 이해할 수없는 cr을 보냅니다. 그냥 ]; cr 사이의 전위를 수정 :

(age < 50) 
    ifTrue: [ 
    Transcript show: 
     'Hello my name is: ', self theName, 'and I am old' printString; 
     cr] 

참고도 더 좋은 방법이 동일

(age < 50) 
    ifTrue: [ 
    Transcript 
     show: 'Hello my name is: '; 
     show: self theName; 
     show: ' and I am old' printString; 
     cr] 

왜 쓰고 있는지? 이 방법을 사용하면 텍스트의 세 부분을 연결하여 중간 문자열 두 개를 만들지 않으므로

마지막으로 인해 우선 순위 규칙의 당신은, BTW age < 50

주위에 괄호가 필요하지 않습니다 당신이 50 아래에 있다면 당신은 오래된되지 않습니다주의!