Basic concepts
名前のスコープ
FlexiLayout language における名前のスコープ: 変数、定数、要素の仮説を、Advanced セクションおよび要素ツリー内のどこで参照できるか。
要素、定数、変数の名前は、プログラム内の特定のセクションでのみ使用できます。これを名前の「スコープ」と呼びます。変数のスコープは、その存続期間も決定します。
Region expression、Advanced pre-search relations、または Advanced post-search relations セクションで宣言された変数名は、そのセクション内で、かつ宣言された位置より後でのみ参照できます。
ブロック内で宣言された名前は、そのブロック内と、そのブロックに含まれるブロック内で、かつ宣言された位置より後でのみ参照できます。
{
Int a; a = 5;
}
要素の仮説には、要素名を使ってアクセスできます。Advanced pre-search relations セクションと Advanced post-search relations セクションでは、FlexiLayout ツリーで現在の要素より上位にあるすべての要素の仮説にアクセスできます。Advanced post-search relations セクションでは、現在の要素自体について生成された仮説にもアクセスできます。ブロック記述の Region expression セクションでは、仮説ツリーの「最良の分岐」上にあるすべての要素の仮説にアクセスできます。
Advanced pre-search relations セクション内のコードは、仮説ツリーの他の分岐上にある仮説とは独立して、各仮説ごとに個別に実行されます。つまり、プログラムが要素記述の特定のセクションのコードを実行する際、上位要素ごとにアクセスできる仮説は 1 つだけであり、それは同じ分岐上にある仮説です。
要素の仮説とそのプロパティには、読み取り専用モードでアクセスします。
上位要素の仮説は、要素の完全名で呼び出します。たとえば、SearchObjects.Group1.Group2.FirstItem です。グループ内のあるサブ要素から別のサブ要素にアクセスする場合、グループ名を指定する必要はありません。たとえば、要素 SearchObjects.Group1.Group2.SecondItem の Advanced… セクションでは、要素 SearchObjects.Group1.Group2.FirstItem を次のいずれかの方法で呼び出せます: SearchObjects.Group1.Group2.FirstItem, Group1.Group2.FirstItem, Group2.FirstItem, FirstItem.
短縮名は、常に最も深い階層にある要素を参照します。
次のような要素ツリーがあるとします。
SearchElements
FirstItem
Group1
FirstItem
SecondItem
SearchElements.Group1.SecondItem 内で FirstItem という名前を使用すると、呼び出されるのは SearchElements.FirstItem 要素ではなく、SearchElements.Group1.FirstItem 要素です。
