CoffeeScript - Toàn diện

Trong chương trước, chúng ta đã tìm hiểu các vòng lặp khác nhau do CoffeeScript cung cấp, whilevà các biến thể của nó. Ngoài những điều đó, CoffeeScript cung cấp các cấu trúc vòng lặp bổ sung được gọi làcomprehensions.

Những hiểu biết này thay thế fortrong các ngôn ngữ lập trình khác, nếu chúng ta thêm các mệnh đề bảo vệ tùy chọn và giá trị của chỉ mục mảng hiện tại một cách rõ ràng. Sử dụng các phép hiểu, chúng ta có thể lặp lại các mảng cũng như các đối tượng và các phép hiểu mà lặp lại các mảng là các biểu thức và chúng ta có thể trả về chúng trong một hàm hoặc gán cho một biến.

Không. Tuyên bố & Mô tả
1 cho..in hiểu

Các for..in hiểu là hình thức hiểu cơ bản trong CoffeeScript bằng cách sử dụng nó, chúng ta có thể lặp lại các phần tử của một danh sách hoặc mảng.

2 cho..của sự hiểu biết

Cũng giống như Mảng, CoffeeScriptScript cung cấp một vùng chứa để lưu trữ các cặp khóa-giá trị được gọi là các đối tượng. Chúng ta có thể lặp lại các đối tượng bằng cách sử dụngfor..of sự hiểu biết do CoffeeScript cung cấp.

3 list comprehensions

Các list sự hiểu biết trong CoffeeScript được sử dụng để ánh xạ một mảng đối tượng sang một mảng khác.

Chỉ số hiểu

Danh sách / mảng các phần tử có một chỉ mục có thể được sử dụng trong phần hiểu. Bạn có thể sử dụng nó trong phần hiểu bằng cách sử dụng một biến như hình dưới đây.

for student,i in [element1, element2, element3]

Thí dụ

Ví dụ sau minh họa việc sử dụng chỉ mục của for…inhiểu trong CoffeeScript. Lưu mã này trong một tệp có tênfor_in_index.coffee

for student,i in ['Ram', 'Mohammed', 'John']
   console.log "The name of the student with id "+i+" is: "+student

Mở command prompt và biên dịch tệp .coffee như hình dưới đây.

c:\> coffee -c for_in_index.coffee

Khi biên dịch, nó cung cấp cho bạn JavaScript sau.

// 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);

Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.

c:\> coffee for_in_index.coffee

Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.

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

Postfix dạng hiểu

Cũng giống như postfix ifunless, CoffeeScript cung cấp dạng postfix của Phần hiểu biết hữu ích trong khi viết mã. Sử dụng cái này, chúng ta có thể viếtfor..in hiểu trong một dòng như hình dưới đây.

#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}
hiển thị ví dụ

Gán cho một biến

Sự hiểu chúng ta sử dụng để lặp lại mảng có thể được gán cho một biến và cũng được trả về bởi một hàm.

Thí dụ

Hãy xem xét ví dụ dưới đây. Ở đây bạn có thể thấy rằng chúng tôi đã truy xuất các phần tử của một mảng bằng cách sử dụngfor..in hiểu và gán điều này cho một biến có tên names. Và chúng tôi cũng có một hàm trả về một cách rõ ràng bằng cách sử dụngreturntừ khóa. Lưu mã này trong một tệp có tênexample.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()

Mở command prompt và biên dịch tệp .coffee như hình dưới đây.

c:\> coffee -c example.coffee

Khi biên dịch, nó cung cấp cho bạn JavaScript sau.

// 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);

Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.

c:\> coffee example.coffee

Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.

The contents of the variable names are ::Ram,Mohammed,John
The value returned by the function is Ram

Theo từ khóa

CoffeeScript cung cấp các phạm vi để xác định danh sách các phần tử. Ví dụ: phạm vi [1..10] tương đương với [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] trong đó, mọi phần tử đều được tăng thêm 1. Chúng tôi cũng có thể thay đổi mức tăng này sử dụngby từ khóa hiểu.

Thí dụ

Ví dụ sau minh họa việc sử dụng by từ khóa của for..inhiểu được cung cấp bởi CoffeeScript. Lưu mã này trong một tệp có tênby_keyword_example.coffee

array = (num for num in [1..10] by 2)
console.log array

Mở command prompt và biên dịch tệp .coffee như hình dưới đây.

c:\> coffee -c by_keyword_example.coffee

Khi biên dịch, nó cung cấp cho bạn JavaScript sau.

// 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);

Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.

c:\> coffee by_keyword_example.coffee

Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.

[ 1, 3, 5, 7, 9 ]