[英]Does Scala have an equivalent to Haskell's Prelude.read?
在Haskell中,我可以寫入read "(1,2)"
並返回元組(1,2)
。 在Scala有什么辦法嗎? 我想我正在尋找的是訪問scala
解釋器中的解析器。
我試過在scala.tools.nsc中逛逛?
是否足以滿足您的需求(或者至少是一個良好的起點)?
scala> val interpreter = new tools.nsc.Interpreter
interpreter: scala.tools.nsc.Interpreter = scala.tools.nsc.Interpreter@522c5afb
scala> interpreter interpret "(3, 5)"
res0: (Int, Int) = (3,5)
res139: scala.tools.nsc.InterpreterResults.Result = Success
scala> interpreter interpret "1 to 10 toList"
res1: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
res140: scala.tools.nsc.InterpreterResults.Result = Success
[編輯:似乎不推薦使用tools.nsc.Interpreter。 現在有一個tools.nsc.interpreter包]
您可能對Scala編譯器API感興趣。 您可能需要編譯源並運行它。 這是AFAIK如何在Scala解釋器中完成的。
記住這些問題:
有關於Scala編譯器的信息( 如在此線程中 ),但它可能已過時:如果您需要詳細信息,則可能必須下載源並生成scaladoc。
我沒有你使用它的動機,但如果你不需要Scala,你也可以對JSR 223:Java™Platform API的腳本感興趣。
如果您只想加載數據結構,您應該考慮其他方法,例如可以從Maven 下載或直接下載的 Lift JSON庫。 該庫允許您序列化/反序列化案例類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.