2012-09-23 32 views
5

Tôi đang cố gắng diễn giải động một chuỗi như một lệnh trong Scala. Đối với điều này, từ những gì tôi hiểu, tôi cần gọi intp.interpret("string") (trong đó intp là viết tắt của thông dịch viên hiện tại và string cho lệnh của tôi) khi đang ở chế độ nguồn, phải không?Bật chế độ sử dụng điện REPL (: power) từ tập lệnh

Tuy nhiên, vấn đề của tôi là tôi muốn làm điều đó từ bên trong một tập lệnh. Vì vậy, tôi đang tìm kiếm một cách để chuyển sang chế độ người dùng điện từ bên trong một kịch bản, và sau đó gọi intp.interpret.

Có cách nào để thực hiện việc chuyển đổi này từ bên trong tệp tập lệnh không?

+1

Thật sự tôi tìm thấy một giải pháp xấu xí: Bạn có thể viết ': power' trong một tệp (hãy gọi nó là 'init') và sau đó chạy trình thông dịch scala một mình. Sau đó, làm ': load init' (sẽ chuyển bạn sang chế độ power) và sau đó từ cùng một dấu nhắc': load program' để thực hiện chương trình muốn diễn giải chuỗi. Biến 'intp' bây giờ sẽ hiển thị. Tuy nhiên, tôi sẽ chào đón nhiều giải pháp đẹp hơn :-) –

Trả lời

1

Nếu bạn đang gọi REPL từ một kịch bản bash hoặc somesuch sau đó bạn có thể bật chế độ :power ngay lập tức thông qua tài sản scala.repl.power hệ thống,

[email protected]$ scala -Dscala.repl.power 
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_05) 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> 
[info] compiler init time: 2.186 s. 

scala> 
** Power User mode enabled - BEEP BOOP SPIZ ** 
** :phase has been set to 'typer'.   ** 
** scala.tools.nsc._ has been imported  ** 
** global._ and definitions._ also imported ** 
** Try :help, vals.<tab>, power.<tab> ** 

scala> 
[info] total init time: 5.105 s. 

scala> 
+0

Không. Đã cố gắng nhưng nó không hoạt động (với phiên bản 2.9.2 cũng như trong máy của tôi). Nếu bạn chạy scala -Dscala.repl.power thì nó sẽ hoạt động (có một số chậm trễ giữa việc tải trình thông dịch và kích hoạt chế độ power), tuy nhiên nếu bạn chạy scala -Dscala.repl.power scriptfile thì nó không . Thông dịch viên than phiền rằng không tìm thấy giá trị intp đó. –