LlDeleteSubList/ja

From Second Life Wiki
< LlDeleteSubList
Revision as of 06:04, 25 February 2016 by SakuraNoel Fayray (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

要約

関数: list llDeleteSubList( list src, integer start, integer end );

src のうち start から end の範囲 (スライス) を除いたリストを list で返します。

• list src 処理対象のリスト
• integer start 開始インデックス
• integer end 終了インデックス

startend には 負のインデックス を使用できます。 関数は src とは異なる list 変数を返しますが、src 自身は変更されませんので、戻り値の方を使うようにしてください。
逆の処理は llListInsertList で行なえます。

仕様

インデックス
先頭 0 -length
末尾 length - 1 -1

インデックス

  • 正のインデックスは先頭から数えます。先頭の要素は 0、末尾の要素は (length - 1) のインデックスを持ちます。
  • 負のインデックスは末尾から数えます。先頭の要素は -length、末尾の要素は -1 のインデックスを持ちます。

警告

  • start あるいは end が正常なインデックス範囲を外れていても、スクリプトはエラー表示を出さずに処理を続けます。

サンプル

src = llDeleteSubList( src, start, end )
default
{
    state_entry()
    {
        // 人名のリストを作成する
        list names = ["Anthony", "Bob", "Charlie", "Diane", "Edgar", "Gabriela"];
        
        // インデックスが 1 から 2 の範囲を削除する
        names = llDeleteSubList(names, 1, 2);

        // 以下のようになる:
        // list names = ["Anthony", "Diane", "Edgar", "Gabriela"];
        
        // 開始インデックス (start) を終了インデックス (end) より大きくしてみる
        names = llDeleteSubList(names, 3, 1);
        
        // 以下のようになる:
        // list names = ["Edgar"];
    }
}

注意点

範囲とインデックス

インデックス範囲の説明を容易にするため、まず全てのインデックスを正 (プラス) に変換してください。負のインデックスは先頭でなく末尾から数えたもので、負のインデックスは全て対応する正のインデックスを (範囲に収まる限りは) 持ちます。末尾 (最後のインデックス) を過ぎた正のインデックス、先頭 (最初のインデックス) より前の負のインデックスは有効で、その結果は予測可能かつ信頼できます。すなわち、その要素はあたかも存在するかのように扱われますが、それは出力されるまでの間に限ります。

  • start <= end の場合、範囲は start から end となります。 [start, end]
  • start > end の場合、範囲は 0 から end、および start から -1 となります。 [0, end] + [start, -1]
    • end が先頭より前の負のインデックスの場合、範囲は [start, -1] となります。
    • end が末尾より後の正のインデックスの場合、範囲は [0, end] となります。
    • startend がいずれも有効な範囲から外れていた場合、関数は処理すべき範囲を持たないことになります。(事実上、関数の呼び出しは無駄になります。)

詳細は負のインデックスを参照してください。

関連項目

特記事項

Search JIRA for related Issues

Signature

function list llDeleteSubList( list src, integer start, integer end );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。