0

私はoptparse.coffeeを読んでいて、次の行と混同しています:

args = args[..]

その行は何をしますか?

4

1 に答える 1

3

細かいマニュアルから:

範囲を使用した配列のスライスとスプライシング

範囲を使用して、配列のスライスを抽出することもできます。2 つのドット (3..6) の場合、範囲は包括的 ( 3, 4, 5, 6) です。3 つのドット ( 3...6) がある場合、範囲は末尾 ( ) を除外し3, 4, 5ます。スライス インデックスには便利なデフォルトがあります。省略された最初のインデックスはデフォルトでゼロになり、省略された 2 番目のインデックスはデフォルトで配列のサイズになります。

つまりarray[..]、次の略語です。

len = array.length
array[0 .. len]

の浅いコピーを作成するだけですarray。つまり、渡された元の配列を変更せずに操作および変更できるように、ローカルの浅いコピーを作成するだけで、関数の呼び出し元が元の参照を介して配列を誤って変更することなく、配列への参照を格納できargs = args[..]ます。関数に渡されました。argsargsargs

次の簡単な例を考えてみましょう。

f = (args) -> args = args[..]

これが次の JavaScript になります。

var f;

f = function(args) {
  return args = args.slice(0);
};

そしてArray#slice

配列の一部の浅いコピーを返します。
[...]を省略した
場合、スライスはシーケンスの最後まで抽出されます。end

つまり、インデックスから始まり、最後までのarray.slice(n)浅いコピーを返し、配列はゼロから始まるインデックスが付けられているため、配列全体の浅いコピーを作成します。arraynarrayarray.slice(0)

于 2013-02-19T04:44:41.007 に答える