scala eval

package com.jason

case class JJ(d: Double*)

object Ss {
  def main(args: Array[String]): Unit = {
    import scala.reflect.runtime.universe._
    import scala.tools.reflect.ToolBox

    val code = """(x: String) => x.replace("$", "")"""
    val toolbox = runtimeMirror(Ss.getClass.getClassLoader).mkToolBox()
    val func = toolbox.eval(toolbox.parse(code)).asInstanceOf[String => String]
    println(func("$10.50")) // prints "10.50"

    val n = 10
    val code2 = s"println($n)"
    toolbox.eval(toolbox.parse(code2))

    val list = "List(1,2,3)"
    val ll = toolbox.eval(toolbox.parse(list)).asInstanceOf[List[Int]]
    println(ll)

    val mm = "new com.jason.MM()" //一定要写package.classname 否则会报错not found: type MM
    val mc = toolbox.eval(toolbox.parse(mm)).asInstanceOf[MM]
    println(mc.x)
  }
}

 需要有如下依赖

<dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.11.8</version>
        </dependency>

 

转载于:https://www.cnblogs.com/jason-dong/p/9724576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值