CoffeeScript - ช่วง

ในบทที่แล้วเราได้เห็น Arrays ใน CoffeeScript ในขณะที่การเขียนโปรแกรมเราจะต้องเผชิญกับสถานการณ์บางอย่างที่เราต้องจัดเก็บลำดับของค่าตัวเลขในอาร์เรย์ดังที่แสดงด้านล่าง

numbers =[1,2,3,4,5,6,7,8,9,10]

CoffeeScript เป็นวิธีที่สั้นกว่าในการแสดงอาร์เรย์ที่มีลำดับของค่าตัวเลขหรือที่เรียกว่า ranges. ฟีเจอร์ของ CoffeeScript นี้ได้รับแรงบันดาลใจมาจาก Ruby

ไวยากรณ์

ช่วงถูกสร้างขึ้นโดยค่าตัวเลขสองค่าตำแหน่งแรกและตำแหน่งสุดท้ายในช่วงคั่นด้วย .. หรือ .... ด้วยจุดสองจุด (1..4) ช่วงจะรวม (1, 2, 3, 4); มีจุดสามจุด (1 ... 4) ช่วงไม่รวมจุดสิ้นสุด (1, 2, 3)

ด้านล่างเป็นไวยากรณ์ของช่วงใน CoffeeScript เราจะกำหนดค่าในช่วงระหว่างวงเล็บเหลี่ยม[ ]เช่นเดียวกับอาร์เรย์ ในช่วงในขณะที่จัดเก็บลำดับของค่าตัวเลขแทนที่จะให้ค่าของลำดับทั้งหมดเราสามารถระบุได้begin และ end ค่าที่คั่นด้วยจุดสองจุด (..) ตามที่แสดงด้านล่าง

range =[Begin..End]

ตัวอย่าง

นี่คือตัวอย่างของช่วงใน CoffeeScript บันทึกในไฟล์ที่มีชื่อranges_example.coffee.

numbers =[0..9]
console.log "The contents of the range are: "+ numbers

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c ranges_example.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าช่วงถูกแปลงเป็นอาร์เรย์ CoffeeScript ที่สมบูรณ์

// Generated by CoffeeScript 1.10.0
(function() {
  var numbers;

  numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

  console.log("The contents of the range are:: " + numbers);

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee ranges_example.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้

The contents of the range are:: 0,1,2,3,4,5,6,7,8,9

ไม่รวมค่าสุดท้าย

ช่วงจะถูกรวบรวมเป็นอาร์เรย์ที่สมบูรณ์ซึ่งประกอบด้วยตัวเลขทั้งหมด หากเราต้องการยกเว้นไฟล์end ค่าแล้วเราต้องแยกไฟล์ start และ end องค์ประกอบของช่วงโดยใช้จุดสามจุด (...) ตามที่แสดงด้านล่าง

range =[Begin...End]

ตัวอย่าง

เราสามารถเขียนตัวอย่างข้างต้นใหม่ได้โดยไม่รวมไฟล์ endมูลค่าตามที่แสดงด้านล่าง บันทึกเนื้อหาต่อไปนี้ในไฟล์ที่มีชื่อrange_excluding_end.coffee

numbers =[0...9]
console.log "The contents of the range are:: "+ numbers

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c ranges_example.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้

// Generated by CoffeeScript 1.10.0
(function() {
  var numbers;

  numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8];

  console.log("The contents of the range are:: " + numbers);

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee ranges_example.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าค่าสุดท้าย9 ไม่รวม

The contents of the range are:: 0,1,2,3,4,5,6,7,8

การใช้ช่วงกับตัวแปร

เรายังสามารถกำหนดช่วงโดยกำหนดค่าเริ่มต้นและค่าสิ้นสุดให้กับตัวแปร

ตัวอย่าง

ลองพิจารณาตัวอย่างต่อไปนี้ ที่นี่เราได้กำหนดช่วงโดยใช้ตัวแปร บันทึกรหัสนี้ในไฟล์ที่มีชื่อrange_variables.coffee

start=0
end=9
numbers =[start..end]
console.log "The contents of the range are: "+ numbers

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c range_variables.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้

// Generated by CoffeeScript 1.10.0
(function() {
  var end, i, numbers, results, start;

  start = 0;

  end = 9;

  numbers = (function() {
    results = [];
    for (var i = start; start <= end ? i <= end : i >= end; start <= end ? i++ : i--) {
      results.push(i);
    }
    return results;
  }).apply(this);

  console.log("The contents of the range are:: " + numbers);

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee range_variables.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าค่าสุดท้าย9 ไม่รวม

The contents of the range are:: 0,1,2,3,4,5,6,7,8,9

ช่วงที่มีอาร์เรย์

เราสามารถแบ่งอาร์เรย์โดยใช้กับช่วง เมื่อใดก็ตามที่เราระบุช่วงทันทีหลังจากอาร์เรย์ (ตัวแปร) คอมไพเลอร์ CoffeeScript จะแปลงเป็นไฟล์slice() การเรียกวิธีการของ JavaScript

สมมติว่าเรามีอาร์เรย์ที่มีค่าตัวเลขพูดว่า 0 ถึง 9 จากนั้นเราสามารถดึงข้อมูล 4 องค์ประกอบแรกของมันได้ดังที่แสดงด้านล่าง

num  = [1, 2, 3, 4, 5, 6, 7, 8, 9]
data = num[0..5]

ค่าลบแสดงถึงองค์ประกอบจากจุดสิ้นสุดเช่น -1 หมายถึง 9 หากเราระบุจำนวนลบ 3 ตามด้วยจุดสองจุดองค์ประกอบสามตัวสุดท้ายของอาร์เรย์จะถูกแยกออก

data = num[-3..]

หากเราระบุเพียงสองจุดในช่วงของอาร์เรย์เป็น num[..]จากนั้นอาร์เรย์ทั้งหมดจะถูกแยกออกมา นอกจากนี้เรายังสามารถแทนที่ส่วนอาร์เรย์ด้วยองค์ประกอบอื่น ๆ โดยใช้ช่วงดังที่แสดงด้านล่าง

num[2..6] = [13,14,15,16,17]

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ช่วงกับอาร์เรย์ บันทึกรหัสนี้ในไฟล์ที่มีชื่อrange_arrays.coffee

#slicing an array using ranges
num  = [1, 2, 3, 4, 5, 6, 7, 8, 9]
data = num[0..5]
console.log "The first four elements of the array : "+data


#Using negative values
data = num[-3..]
console.log "The last 3 elements of the array : "+data

#Extracting the whole array
console.log "Total elements of the array : "+num[..]


#Replacing the elements of an array
num[2..6] = [13,14,15,16,17]
console.log "New array : "+num

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c range_arrays.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าช่วงทั้งหมดถูกแปลงเป็นการเรียกเมธอด slice () ของ JavaScript

// Generated by CoffeeScript 1.10.0
(function() {
  var data, num, ref;

  num = [1, 2, 3, 4, 5, 6, 7, 8, 9];

  data = num.slice(0, 6);

  console.log("The first four elements of the array : " + data);

  data = num.slice(-3);

  console.log("The last 3 elements of the array : " + data);

  console.log("Total elements of the array : " + num.slice(0));

  [].splice.apply(num, [2, 5].concat(ref = [13, 14, 15, 16, 17])), ref;

  console.log("New array : " + num);

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee range_arrays.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าค่าสุดท้าย9 ไม่รวม

The first four elements of the array : 1,2,3,4,5,6
The last 3 elements of the array : 7,8,9
Total elements of the array : 1,2,3,4,5,6,7,8,9
New array : 1,2,13,14,15,16,17,8,9

ช่วงที่มีสตริง

เรายังสามารถใช้ช่วงกับ Strings หากเราระบุช่วงหลังจาก Strings แล้ว CoffeeScript จะแบ่งช่วงและส่งกลับชุดย่อยของอักขระใหม่

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ช่วงกับ Strings ที่นี่เราได้สร้างสตริงและแยกสตริงย่อยจากสตริงโดยใช้ช่วง บันทึกรหัสนี้ในไฟล์ที่มีชื่อranges_with_strings.coffee

my_string = "Welcome to tutorialspoint"
new_string = my_string[0..10]
console.log new_string

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c ranges_with_strings.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้

// Generated by CoffeeScript 1.10.0
(function() {
  var my_string, new_string;

  my_string = "Welcome to tutorialspoint";

  new_string = my_string.slice(0, 6);

  console.log(new_string);

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee ranges_with_strings.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าค่าสุดท้าย9 ไม่รวม

Welcome to

ความเข้าใจในช่วงต่างๆ

ในฐานะออบเจ็กต์และอาร์เรย์เรายังสามารถวนซ้ำองค์ประกอบของช่วงโดยใช้ความเข้าใจ

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างของการใช้ความเข้าใจในช่วงต่างๆ ที่นี่เราได้สร้างช่วงและเรียกใช้องค์ประกอบในนั้นโดยใช้ความเข้าใจ บันทึกรหัสนี้ในไฟล์ที่มีชื่อcomprehensions_over_ranges.coffee

numbers =[0..9]
console.log "The elements of the range are: "
console.log num for num in numbers

เปิด command prompt และรวบรวมไฟล์. coffee ตามที่แสดงด้านล่าง

c:\> coffee -c comprehensions_over_ranges.coffee

ในการคอมไพล์จะมี JavaScript ดังต่อไปนี้

// Generated by CoffeeScript 1.10.0
(function() {
  var i, len, num, numbers;

  numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

  console.log("The elements of the range are: ");

  for (i = 0, len = numbers.length; i < len; i++) {
    num = numbers[i];
    console.log(num);
  }

}).call(this);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee comprehensions_over_ranges.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้ ที่นี่คุณสามารถสังเกตได้ว่าค่าสุดท้าย9 ไม่รวม

The elements of the range are:
0
1
2
3
4
5
6
7
8

ในทำนองเดียวกันเรายังสามารถเปลี่ยนส่วนเพิ่มนี้ได้โดยใช้คำสำคัญของความเข้าใจ

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