Ba cách căn bản để chạy chương trình Scala

354
07-03-2018
Ba cách căn bản để chạy chương trình Scala

Giả sử có chương trình three_ways_run.scala như sau: Ba cách để chạy chương trình Scala, ví dụ:

println("There are 3 ways to run a scala program")

1. Chạy trong chế độ Interactive

Gõ lệnh Scala để hiện console:

$ scala

- Scala> (copy tòan bộ code của chương trình phía trên rồi ấn phím Enter là xong)

2. Chạy trực tiếp bằng lệnh scala (chế độ thông dịch)

Gõ lệnh như sau:

$ scala three_ways_run.scala

3. Compile thành file .class rồi chạy như cách chạy của Java

Hai cách trên cứ thế mà chạy. Cách này thì cần sửa lại nội dung three_ways_run.scala để có thêm hàm mainnhư sau:

package ex

object ThreeWaysRun {

def main(args: Array[String]) {

println("There are 3 ways to run a scala program")

}

}

$ scalac three_ways_run.scala

$ scala ex.ThreeWaysRun

Các file .class sẽ được tạo ra. Mặc dù đã compile ra file .class, nhưng không thể đơn giản là chạy bằng lệnh java như cách của Java:

$ java ex.ThreeWaysRun

Lệnh trên sẽ bị lỗi. Nếu muốn không bị lỗi thì cần thêm thư viện scala vào biến môi trường CLASSPATH để Java biết phải load thư viện từ chỗ nào.

$ export CLASSPATH=path/to/scala-library.jar:.

$ java ex.ThreeWaysRun

Hoặc gộp 2 lệnh trên thành 1:

$ CLASSPATH=path/to/scala-library.jar:. java ex.ThreeWaysRun

Hoặc:

$ java -cp path/to/scala-library.jar:. ex.ThreeWaysRun

Như vậy, có thể hiêu ở cách 2, lệnh scala đã tự động thêm thư viện scala-library.jar vào CLASSPATH giúp ta.

Bài tập 4: OOP bằng Scala

Theo truyền thống khi học ngôn ngữ hướng đối tượng, hãy thử làm bài tập 4OOP bằng Scala xem sao:

trait Animal {

def talk()

}

case class Cat(name: String) extends Animal {

override def talk() {

println("Meow, my name is " name)

}

}

case class Dog(name: String) extends Animal {

override def talk() {

println("Wolf, my name is " name)

}

}

class Zoo {

private var animals = List[Animal]()

def add(animal: Animal) {

animals = animal : animals

}

def talkAll() {

animals.foreach(_.talk)

}

}

val c = new Cat("Kitty")

val d = new Dog("Pluto")

val z = new Zoo

z.add(c)

z.add(d)

z.talkAll()

4 tính chất của OOP thể hiện ở 3 keyword là: trait, extends, override và ở việc Cat và Dog đóng gói thông tin name và phương thức talk với nhau.

Đoạn mã trên chạy được theo 2 kiểu đầu. Bạn hãy thử sửa để nó chạy được theo kiểu thứ 3.

>> Tham khảo thêm: Scala: Object và Companion Object

TAGS: scala
SHARE