2011-10-30 33 views
7

Tôi đang chơi với Scala. Những gì tôi cần chỉ là một loạt các định nghĩa hàm, nhưng trong Eclipse tôi chỉ có thể tạo các tệp .scala mà một hàm def phải nằm trong một đối tượng hoặc một lớp.tạo tệp tập lệnh Scala trong Eclipse

Nhưng tôi thấy tập lệnh Scala trực tuyến, here, không sử dụng đối tượng để bao bọc tất cả các chức năng.

Đó là tất nhiên ok cho tôi để sử dụng một đối tượng để bọc tất cả các chức năng của tôi, nhưng tôi chỉ tự hỏi liệu nó là cần thiết. Cảm ơn!

+3

Bạn có thể chỉnh sửa tập lệnh mà không cần gói trong đối tượng trong IntelliJ –

Trả lời

2

Nhưng tôi thấy một kịch bản Scala trực tuyến, ở đây, mà không sử dụng một đối tượng để bọc tất cả các chức năng.

Lưu ý rằng trong trường hợp này, các chức năng không thể được gọi từ các tệp khác (chúng được gói trong một object với tên do trình biên dịch tạo khi chạy). Nếu bạn "chỉ cần một loạt các định nghĩa chức năng", điều này có thể không phải là những gì bạn muốn :) AFAIK, Scala IDE không hỗ trợ tập tin kịch bản tại thời điểm này, nhưng bạn có thể đăng nhập một yêu cầu tính năng here.

1

Theo hiểu biết của tôi, không thể viết hàm hoặc biến hoàn toàn nằm ngoài phạm vi. Điều đó nói rằng có thể viết chúng ra ngoài định nghĩa lớp/đối tượng. Bạn chỉ cần quấn chúng trong một số package object. Những gì đang xảy ra về cơ bản là thay vì buộc hàm/biến cho một lớp hoặc đối tượng đã cho, bạn buộc nó vào một gói. Ví dụ:

package test 
package object inside { 
    def hello = println("Hello from outer space!") 
    class Foo { 
    hello // call the function from the package 
    } 
} 

Bây giờ, khi bạn xây dựng Foo, bạn sẽ được in "Xin chào từ không gian bên ngoài!".

Nếu không biết hoàn toàn những gì tôi đang nói, tôi có thể tưởng tượng rằng phiên bản tập lệnh bạn đã đề cập ở trên hoạt động, bởi vì tập lệnh đang được chạy trong một môi trường nào đó. Vì vậy, hãy tưởng tượng một số lớp tải kịch bản, sau đó gói nó vào một đối tượng và chạy nó. Điều đó có nghĩa là một tình huống hơi giống như ở trên: các chức năng vẫn "thuộc về" ở đâu đó.

+0

Scala hỗ trợ kiểu tập lệnh, mà không cần bất kỳ lớp, đối tượng hoặc đối tượng gói nào. –

2

Có, trong Eclipse bạn cần bọc mọi thứ trong một đối tượng hoặc một lớp.

Bạn có thể chỉnh sửa tập lệnh Scala trong Eclipse miễn là bạn quấn mã trong một đối tượng và tránh Shebang. Chỉ cần chạy tập lệnh với scala -i scriptName.scala -e "Main.main(args)" (cung cấp cho bạn thư mục "bin" phân phối scala trên số path) của bạn.

foo.scala:

object Main extends App { 
    println ("foo") 
} 

Để chạy nó:

scala -i foo.scala -e "Main.main(args)" 
Các vấn đề liên quan