はい。迷った場合は、適用範囲(スコープ)を指定してください。特に、多くの人がさまざまなデータテーブルとともに使う可能性があるスクリプトでは、必ず適用範囲を指定してください。気づかないで、同じ名前を2つのコンテキストで使用している場合(たとえば、データ列と同じ名前のグローバル変数を定義する、など)があるからです。
そのようなスクリプトを書く場合は、適用範囲と名前空間を明確に指定してください。高度な適用範囲指定と名前空間を参照してください。
接頭スコープ演算子は、いったん解決された後は、実行時オーバーヘッドがかかりません。二項スコープ演算子は、常に、実行時オーバーヘッドがかかります。
列を参照すると、列の特定の属性を変更するメッセージや、その値(セルの色付けや計算式の設定など)にアクセスするメッセージを送ることができます。
グローバル変数に列が割り当てられている場合は、添え字を使って列内のセルに値を割り当てます。列名「身長(インチ)」が変数xに割り当てられているとします。
x = Column( "身長(インチ)" );
「身長(インチ)」列の3行目に、次のように値を割り当てます。
x[3] = 64 // 身長の3行目の値を64に設定する
メモ: JSLスクリプトの現在行は、行を選択することや行にカーソルを置くことで決定されるのではありません。現在行は、デフォルトではゼロ(行なし)になっています。Row()(たとえば、Row() = 3)で現在行を設定することができますが、このような設定はそのスクリプトが実行されている間だけ有効で、スクリプトの実行が終了すると、Row()はデフォルトの値ゼロに戻ります。そのため、一度にスクリプトすべてを実行したときと、一度に数行ずつスクリプトを実行したときとでは、異なる結果になる場合があることに注意してください。 スクリプトの現在の行を設定するもう1つの方法は、For Each Row()で囲む方法です。これは、現在のデータテーブルの行ごとにスクリプトを1回ずつ実行します。例として、Ifを参照してください。データテーブルの操作方法については、データテーブルを参照してください。 |
スコープ演算子(:)は、添え字([])より前に評価されます。これは、次の2つの行が等価であることを示します。
dataTable:colName[i]
(dataTable:colName)[i]