Home » Scala » Streams trong Scala

Streams trong Scala

Stream là gì?


Một stream giống như một list, ngoại trừ việc các phần tử của nó có tính lazy. Do vậy mà stream có thể dài vô tận. Chỉ những phần tử nào được yêu cầu thì mới được tính toán.

Tạo một stream như thế nào?


Tạo một stream tương tự việc tạo list, đối với list, ta sử dụng toán tử ::, còn với stream sẽ dùng #::
Bài toán: Tạo một stream với 3 phần tử 1, 2, 3
Bạn có thể tham khảo các cách sau:


Ở trường hợp thứ 4, có warning, bạn có thể sửa lại:


Head của stream là 1, tail là 1, 2 và 3. Tuy nhiên thì tail của stream không được in ra, bởi vì nó chưa được yêu cầu để tính toán.

Vừa rồi chúng ta đã tạo một stream hữu hạn phần tử, bây giờ ta sẽ tạo stream vô hạn phần tử qua ví dụ sau:
Ví dụ: Tạo stream dãy fibonacci


Stream dãy fibonacci đã được tạo, giả sử bây giờ chúng ta lấy 10 phần tử đầu tiên của dãy:


Bạn hãy thử sức với bài toán sau và để lại kết quả nhé:
“In ra dãy n số nguyên tố đầu tiên với n nguyên dương bất kỳ được nhập từ bàn phím”

Tài liệu tham khảo:
http://www.scala-lang.org/docu/files/collections-api/collections_14.html