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ụ:
1. Chạy trong chế độ Interactive
Gõ lệnh Scala để hiện console:
- 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:
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:
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:
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