[Scala] - day 1 : data trong Scala

*) nếu bạn chưa setup scala có thể làm theo tutorial này
- nếu bạn dùng Windows : cài đặt scala, sbt, activator trên Windows
- nếu bạn dùng Ubuntu : cài đăt scala, sbt, activator trên Ubuntu

Trước tiên hãy xem làm sao để define 1 param trong Scala :
val <name>: <type> = <literal>
or
var <name>: <type> = <literal>
  • literal (hay literal data) là dữ liệu hiển thị trong code của bạn, như là số , ký tự hay 1 dòng text nào đó.
  • value ( val ) dùng để define 1 giá trị cụ thể và value thì không thay đổi được,ban không thể gán lại 1 value. 
  • variable ( var ) dùng để define 1 biến , và bạn có thể thay đổi hay gán lại giá trị cho biến nếu muốn.
  • type là kiểu của value hay variable mà bạn define. Mọi loại data trong Scala đều tương ứng với 1 kiểu dữ liệu nào đó, và tất cả các kiểu dữ liệu trong Scala đều được định nghĩa như 1 class với những method đi kèm với nó.
 Ok,mở terminal của bạn lên và thử 1 vài ví dụ:
scala> val soNam: Int = 5
soNam: Int = 5
 Ở đây tôi đơn giản tạo value tên là soNam kiểu Int () và có giá trị (literal) là 5.

I - Values 

val <identifier>[: <type>] = <data>
 Như đã nói ở trên,value không thể thay đổi và mọi value đều có 1 kiểu xác định.

scala> val x: Int = 20
x: Int = 20
scala> val greeting: String = "Hello, World"
greeting: String = Hello, World
scala> val atSymbol: Char = '@'
atSymbol: Char = @
Nếu bạn  không set cho nó 1 kiểu rõ ràng thì Scala sẽ tự gán cho bạn,mình viết lại những ví dụ trên mà không gán kiểu nào cả :
scala> val x = 20
x: Int = 20
scala> val greeting = "Hello, World"
greeting: String = Hello, World
scala> val atSymbol = '@'
atSymbol: Char = @
Và bạn không thể thay đổi giá trị của 1 value :
scala> x = 30
<console>:11: error: reassignment to val
x = 30
^

II - Variable

var <identifier>[: <type>] = <data>
Variable mang đặc điểm như Value nhưng có thể gán lai giá trị được ,tuy nhiên có 1 điều Variable không thể  gán lại giá trị khác kiểu đang mang.
scala> var intNum = 5
intNum: Int = 5

scala> intNum = intNum * 4
intNum: Int = 20

scala> intNum = "Pham Thanh Hoai"
<console>:11: error: type mismatch;
 found   : String("Pham Thanh Hoai")
 required: Int
       intNum = "Pham Thanh Hoai"
                ^

III - Type 

Như đã nói ở trên mọi loại data đều trong Scala đều tương ứng với 1 kiểu dữ liệu nào đó, và tất cả các kiểu dữ liêu trong Scala đều được định nghĩa như 1 class với những method đi kèm với nó.
















Theo quan hệ ở hình trên ta thấy Any là root của mọi type trong Scala,trong Scala sẽ tự động convert từ Sub Type thành Parent Type và không đồng ý chiều ngược lại :
scala> val intNum: Int = 10
intNum: Int = 10

scala> val longNum: Long = intNum
longNum: Long = 10

scala> val intNum2: Int = longNum
<console>:12: error: type mismatch;
 found   : Long
 required: Int
       val intNum2: Int = longNum

                          ^
Hôm nay ta sẽ dừng ở đây, hôm sau chúng ta sẽ tìm hiểu về Expressions và Conditionals trong Scala

Comments

  1. Cám ơn anh về những kiến thức anh chia sẻ.
    Em cũng mang bắt đầu với Scala. Những bài viết của anh rất hữu ích với một người mới tìm hiểu scala.
    Anh có thể chia sẻ cho em về Play framework không ạ?

    ReplyDelete
    Replies
    1. sau khi hoàn thành hết về Scala basic tour tiếp theo sẽ là play framework em ạ

      Delete
  2. Bạn nên gom các bài theo danh sách. Có next bài or mục lục như vậy sẽ hay hơn là để lộn xộn như này

    ReplyDelete

Post a Comment