CoffeeScript-内包表記
前の章では、CoffeeScriptによって提供されるさまざまなループを学びました。 whileおよびそのバリアント。それらに加えて、CoffeeScriptはとして知られている追加のループ構造を提供しますcomprehensions。
これらの内包表記は、 forオプションのガード句と現在の配列インデックスの値を明示的に追加すると、他のプログラミング言語でループします。内包表記を使用すると、オブジェクトだけでなく配列も反復処理でき、配列を反復処理する内包表記は式であり、関数で返すか、変数に割り当てることができます。
S.No. | ステートメントと説明 |
---|---|
1 | for ..内包表記 ザ・ for..in 理解は、これを使用してリストまたは配列の要素を反復できるCoffeeScriptの理解の基本的な形式です。 |
2 | 内包表記 配列と同じように、CoffeeScriptScriptは、オブジェクトと呼ばれるキーと値のペアを格納するためのコンテナーを提供します。を使用してオブジェクトを反復できますfor..of CoffeeScriptによって提供される内包表記。 |
3 | list comprehensions ザ・ list CoffeeScriptの内包表記は、オブジェクトの配列を別の配列にマップするために使用されます。 |
理解のインデックス
要素のリスト/配列には、内包表記で使用できるインデックスがあります。以下に示す変数を使用して、内包表記で使用できます。
for student,i in [element1, element2, element3]
例
次の例は、インデックスの使用法を示しています。 for…inCoffeeScriptの理解。このコードを名前の付いたファイルに保存しますfor_in_index.coffee
for student,i in ['Ram', 'Mohammed', 'John']
console.log "The name of the student with id "+i+" is: "+student
を開きます command prompt 次に示すように、.coffeeファイルをコンパイルします。
c:\> coffee -c for_in_index.coffee
コンパイルすると、次のJavaScriptが表示されます。
// Generated by CoffeeScript 1.10.0
(function() {
var i, j, len, ref, student;
ref = ['Ram', 'Mohammed', 'John'];
for (i = j = 0, len = ref.length; j < len; i = ++j) {
student = ref[i];
console.log("The name of the student with id " + i + " is: " + student);
}
}).call(this);
今、開きます command prompt もう一度、以下に示すようにCoffeeScriptファイルを実行します。
c:\> coffee for_in_index.coffee
実行すると、CoffeeScriptファイルは次の出力を生成します。
The name of the student with id 0 is: Ram
The name of the student with id 1 is: Mohammed
The name of the student with id 2 is: John
内包表記の接尾辞形式
接尾辞のように if そして unless、CoffeeScriptは、コードの記述時に便利な内包表記の接尾辞形式を提供します。これを使用して、for..in 以下に示すように、1行で理解できます。
#Postfix for..in comprehension
console.log student for student in ['Ram', 'Mohammed', 'John']
#postfix for..of comprehension
console.log key+"::"+value for key,value of { name: "Mohammed", age: 24, phone: 9848022338}
例を示す
変数への割り当て
配列を反復するために使用する内包表記は、変数に割り当てたり、関数から返すこともできます。
例
以下の例を考えてみましょう。ここでは、を使用して配列の要素を取得したことがわかります。for..in 理解し、これをという名前の変数に割り当てました names。また、を使用して明示的に理解を返す関数もあります。returnキーワード。このコードを名前の付いたファイルに保存しますexample.coffee
my_function =->
student = ['Ram', 'Mohammed', 'John']
#Assigning comprehension to a variable
names = (x for x in student )
console.log "The contents of the variable names are ::"+names
#Returning the comprehension
return x for x in student
console.log "The value returned by the function is "+my_function()
を開きます command prompt 次に示すように、.coffeeファイルをコンパイルします。
c:\> coffee -c example.coffee
コンパイルすると、次のJavaScriptが表示されます。
// Generated by CoffeeScript 1.10.0
(function() {
var my_function;
my_function = function() {
var i, len, names, student, x;
student = ['Ram', 'Mohammed', 'John'];
names = (function() {
var i, len, results;
results = [];
for (i = 0, len = student.length; i < len; i++) {
x = student[i];
results.push(x);
}
return results;
})();
console.log("The contents of the variable names are ::" + names);
for (i = 0, len = student.length; i < len; i++) {
x = student[i];
return x;
}
};
console.log("The value returned by the function is " + my_function());
}).call(this);
今、開きます command prompt もう一度、以下に示すようにCoffeeScriptファイルを実行します。
c:\> coffee example.coffee
実行すると、CoffeeScriptファイルは次の出力を生成します。
The contents of the variable names are ::Ram,Mohammed,John
The value returned by the function is Ram
byキーワード
CoffeeScriptは、要素のリストを定義するための範囲を提供します。たとえば、範囲[1..10]は[1、2、3、4、5、6、7、8、9、10]と同等です。ここで、すべての要素は1ずつ増分されます。この増分を変更することもできます。を使用してby 内包表記のキーワード。
例
次の例は、 by のキーワード for..inCoffeeScriptによって提供される理解。このコードを名前の付いたファイルに保存しますby_keyword_example.coffee
array = (num for num in [1..10] by 2)
console.log array
を開きます command prompt 次に示すように、.coffeeファイルをコンパイルします。
c:\> coffee -c by_keyword_example.coffee
コンパイルすると、次のJavaScriptが表示されます。
// Generated by CoffeeScript 1.10.0
(function() {
var array, num;
array = (function() {
var i, results;
results = [];
for (num = i = 1; i <= 10; num = i += 2) {
results.push(num);
}
return results;
})();
console.log(array);
}).call(this);
今、開きます command prompt もう一度、以下に示すようにCoffeeScriptファイルを実行します。
c:\> coffee by_keyword_example.coffee
実行すると、CoffeeScriptファイルは次の出力を生成します。
[ 1, 3, 5, 7, 9 ]