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

Ngoc Dao viết ngày 20/03/2016

Đó là:

  1. Chạy trong chế độ interactive
  2. Chạy trực tiếp bằng lệnh scala (chế độ thông dịch)
  3. Compile thành file .class rồi chạy như cách chạy của Java

Các cách trên là chạy từ dòng lệnh, là các cách căn bản cần biết. Tất nhiên còn cách nữa là chạy từ IDE như Eclipse và IntelliJ.

Chương trình ví dụ

Giả sử có chương trình three_ways_run.scala như sau:

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 4OOP 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.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Ngoc Dao

102 bài viết.
300 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
66 8
Làm thế nào để nâng cấp trang web mà không làm gián đoạn dịch vụ? Đây là câu hỏi phỏng vấn các công ty lớn thường hỏi khi bạn xin vào vị trí làm lậ...
Ngoc Dao viết hơn 2 năm trước
66 8
White
42 1
Bài viết này giải thích sự khác khác nhau giữa hai ngành khoa học máy tính (computer science) và kĩ thuật phần mềm (software engineering), hi vọng ...
Ngoc Dao viết hơn 2 năm trước
42 1
White
38 2
Nếu là team leader, giám đốc công ty hay tướng chỉ huy quân đội, vấn đề cơ bản bạn gặp phải là “hướng mọi người đi theo con đường bạn chỉ ra”. Thử...
Ngoc Dao viết hơn 2 năm trước
38 2
Bài viết liên quan
White
0 0
Clojure là ngôn ngữ functional có hỗ trợ OOP. Về mặt khoa học máy tính, có nhiều cách để thực hiện đa hình. Ở phiên bản trước 1.2, đa hình trong Cl...
Ngoc Dao viết hơn 2 năm trước
0 0
White
10 0
Kí tự Regex cơ bản Về cơ bản thì các sử lý matching của scala.util.matching.Regex sẽ được "phó thác" (delegate) cho java Regex. Bạn có thể tạo một ...
huydx viết hơn 3 năm trước
10 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
102 bài viết.
300 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!