Có thể, và nếu có thì nó được thực hiện như thế nào? Thông thường >
và >>
hoạt động trên dòng lệnh Windows hoặc Linux không hoạt động trong ngữ cảnh này.Trình thông dịch tương tác Scala (REPL) - cách chuyển hướng đầu ra sang một tệp văn bản?
Trả lời
Bạn có thể làm điều đó programmaticaly từ giao diện điều khiển:
import java.io.FileOutputStream
import scala.Console
Console.setOut(new FileOutputStream("<output file path>"))
từ giờ trở đi tất cả print
và println
sẽ được đưa trực tiếp vào tập tin này
Đó là chưa rõ ràng từ câu hỏi của bạn chính xác như bạn muốn sử dụng một điều như vậy . Một ví dụ về những gì bạn đang cố gắng làm có thể hữu ích.
Đây là hàm ẩn sẽ thêm một toán tử đơn giản viết đối tượng bất kỳ dưới dạng Chuỗi vào tệp. (Lưu ý rằng tôi đang sử dụng >>
nghĩa unix-style >
từ >
đã có ý nghĩa trong Scala ("ít hơn"). Bạn có thể thay thế này với một số nhà khai thác khác nếu bạn muốn.)
implicit def anyToFileOutput(self: Any) = new {
import java.io._
def >>(filename: String) {
val f = new BufferedWriter(new FileWriter(filename))
try {
f.write(self.toString)
} finally {
if (f != null)
f.close()
}
}
}
Bạn sẽ sử dụng nó như thế này:
scala> List(1,2,3) >> "out.txt"
nào tạo ra một tập tin, "out.txt" trong thư mục làm việc chứa List(1, 2, 3)
Đây là những gì tôi đang cố gắng làm - ví dụ, nếu tôi gọi 'calculateSomething (a, b, c)' trả về một danh sách 'Int', lý tưởng nó sẽ hướng 'print' và' println' các câu lệnh trong 'calculateSomething' vào một tệp, và cũng gửi kết quả danh sách trả về tới một tệp. – Gigatron
Trông có tác dụng tốt với tôi:
[email protected]:~/github/scala (master)$ scala -e "println(2 * 2)" > output
[email protected]:~/github/scala (master)$ cat output
4
Cảm ơn, nhưng đó là dòng lệnh OS, không phải trong phiên REPL đang chạy. – Gigatron
@Gigatron Chỉ tạo chuỗi thay vì in và sau đó dễ dàng gửi đến tệp. Sau đó, một lần nữa, nếu bạn cho thấy những gì bạn dự định thực hiện thay vì hỏi làm thế nào để thực hiện các giải pháp mong muốn của bạn, tất cả chúng ta có thể hữu ích hơn nhiều. –
- 1. Làm thế nào để chạy một tệp bên ngoài từ bên trong trình thông dịch tương tác scala (REPL)?
- 2. Cách chuyển hướng đầu ra bàn điều khiển sang một tệp văn bản
- 3. Chuyển hướng đầu ra grep sang tệp
- 4. Chuyển hướng đầu ra django manage.py (trong cửa sổ) sang tệp văn bản
- 5. cách chuyển hướng đầu ra của lệnh sang hai tệp
- 6. Chuyển hướng đầu ra bash sang tên tệp động
- 7. chuyển hướng đầu ra cho file văn bản C#
- 8. Thông số màu Perl với đầu ra được chuyển hướng
- 9. Làm cách nào để chuyển hướng đầu ra tiêu chuẩn sang một tệp trong Perl?
- 10. Chuyển sang chương trình giữa phiên tương tác Python?
- 11. Chuyển hướng đầu ra 'in' của Python sang Logger
- 12. Làm cách nào để chuyển hướng đầu ra của hàm chết sang một tệp trong Perl?
- 13. chuyển hướng đầu ra của lệnh 'find' sang 'vim'
- 14. Làm cách nào để điều hướng văn bản trong trình thông dịch chương trình lisp-terminal?
- 15. Làm cách nào để chuyển hướng tất cả đầu ra của bàn điều khiển sang hộp văn bản GUI?
- 16. Cách sửa thiết bị đầu cuối khi thông dịch viên scala gây ra văn bản vô hình
- 17. Chuyển hướng đầu ra tiêu chuẩn sang syslog
- 18. In Unicode từ trình thông dịch Scala
- 19. có cách nào để chuyển hướng đầu vào và đầu ra đến cùng một tệp không?
- 20. Chuyển hướng đầu ra từ vỏ erlang vào một tệp
- 21. Ghi nhật ký Java - cách chuyển hướng đầu ra sang tệp nhật ký tùy chỉnh cho trình ghi nhật ký?
- 22. Kịch bản lệnh Windows: Chuyển hướng TẤT CẢ đầu ra đến một tệp
- 23. C++ Đầu ra chuyển hướng
- 24. SCons: lưu/chuyển hướng đầu ra văn bản gcc (cảnh báo)
- 25. Cách chuyển đổi PDF sang tệp văn bản trong iTextSharp
- 26. Đăng nhập Hủy đầu ra thành một tệp văn bản
- 27. backclace glibc - không thể chuyển hướng đầu ra đến tệp
- 28. Xuất đầu ra powershell thành tệp văn bản
- 29. Chuyển đổi EF, Văn bản đầu ra sang Bàn điều khiển Nuget
- 30. Các khối mã chuyển hướng đầu ra đầu vào
'setOut' không hoạt động trong 2.9 REPL do [SI-4793] (https://issues.scala-lang.org/browse/SI-4793). Xem [câu trả lời của tôi] (http://stackoverflow.com/questions/7219316/println-vs-system-out-println-in-scala/7219519#7219519) – 4e6
Mặc dù không hoàn hảo, tôi chấp nhận điều này là nhất câu trả lời hữu ích. Tôi nhận thấy đôi khi không có gì trong tệp cho đến khi tôi thoát khỏi REPL. Để giải quyết vấn đề liên quan đến việc lưu trữ 'FileOutputStream' trong' val' và sau đó gọi 'close' trên nó để xóa nội dung vào tệp. – Gigatron