後置式


図 6.29. 後置式

基礎式 [
  {
    '.' 名称 | '(' 式リスト ')' | '[' 名称 '|' 値式 ']' | '[' 値式 ']' | '[' 値式 '..' ['<'][値式] ']'
  }...
]


メンバアクセス

インスタンスのメンバ変数・関数へのアクセス

図 6.30. 後置式(メンバアクセス句)

'.' 名称

この例は、変数(aPair.good)とインスタンス関数(aPair.topsy())の両方をドットで メンバアクセスするものです。

class Pair {
   var good : String;
   var bad : String;
   function topsy() {
      def tmp = good;
      good = bad;
      bad = tmp;
   }
}
def aPair = Pair {
   good: 'Sunflower Sprouts'
   bad: 'Lard'
}
println( aPair.good );
aPair.topsy();
println( aPair.good );

印字結果:

Sunflower Sprouts 
Lard


関数の呼び出し

ファンクションコールとしても知れている関数の呼び出しは、、、、、、関数の呼び出し方です。 (訳注:原文もこんな感じ。)

図 6.31. 後置式(関数の呼び出し句)

'(' 式リスト ')'

図 6.32.

[ 値式 [,...] ]

これはスクリプト関数の呼び出しの例です。 インスタンス関数の呼び出し例はメンバアクセスの節を参照してください。

function squared(x : Number) : Number { x * x }
println( squared(14,2) );


配列選択

配列選択の式は、他の配列の選択された要素を含んだ新しい配列として評価されます。

図 6.33. 後置式(配列選択句)

'[' 名称 '|' 値式 ']'

もしBoolean値式がtrueと評価されれば、要素は結果の配列に含まれます。 その名称は、値式で使われる各要素の名前として使われます。

例:

def seq = [1..100];
def selected = seq[x | (x*x) < 20];
println( selected );

seqの選択された要素は、その二乗が20よりも小さいものになります。よって次のように印字されます。

[ 1, 2, 3, 4 ]

この選択はfor式の評価でもなされることも注意してください。

def selected = for (x in seq where (x*x) < 20) x;


配列インデクス

配列インデクス式は、指定されたインデクスで配列のひとつの要素にアクセスします。 もしそのインデクスに要素がない場合は、その配列インデクス式は、 配列の要素固有のデフォルト値として評価します。

図 6.34 後置式(インデクス句)

'[' 値式 ']'

例:

def seq = [100..105];
println( seq[0] );
println( seq[3] );
println( seq[22] );
println( seq[-1] );

ここでseqの要素の指示子はIntegerなので、次のように印字されます。Integerのデフォルト値はゼロだからです。

100 
103 
0 
0

配列インデクス式の型は、その指定された配列の要素の指示子(要素の型)です。


配列スライス

配列スライス式は、他の配列の部分の配列として評価されます。 その部分を構成する要素は、インデクスの範囲で指定されます。

図 6.35. 後置式(スライス句)

'[' 値式 '..' ['<'][値式]

二つの値式は範囲の始端と終端を与えます。始端はいつも含まれていて、 範囲の終端は、小なり記号が使われていなければ、含まれます。 終端の値式はオプションで、もしなければ、範囲の終端は、配列の最後のインデクスになります。

例:

def usprez = ['Washington', 'Adams', 'Jefferson', 'Madison', 'Monroe'];
println( usprez[1..3] );
println( usprez[1..<3] );
println( usprez[3..] );
println( usprez[3..<] );

印字結果:

[ Adams, Jefferson, Madison ]
[ Adams, Jefferson ] 
[ Madison, Monroe ] 
[ Madison ]

配列スライス式の型は、スライス句が適用された配列の型になります。


Home