2016-10-18 5 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 

として最初に条件を置く場合、私は取得するように見えることができないようですトランスクリプトに印刷するprintNewメソッド。前もって感謝します!

+1

だから、「年齢」の価値は何ですか? –

答えて

2

私はそれをよりよく理解するために、あなたの表現をフォーマットしてみましょう:

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

は、順番にSmalltalkの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] 

なぜであること?この方法では、テキストの3つの部分を連結して中間の2つの文字列を作成することはありません。

は最後にあるため優先順位規則のあなたは50下にある場合は、古いものではなく、ところでage < 50

を括弧で囲む必要はありませんのでご注意します!

関連する問題