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.</version>
</dependency>
scala eval的更多相关文章
- Scala Macros - 元编程 Metaprogramming with Def Macros
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...
- 解读 《2014 最流行编程语言》 by Code Eval
此文已转至http://cn.abnerchou.me/2014/02/23/fa87ae80/ 原文:点我 原文翻译:点我 首先了解下CodeEval是做什么的: A tool for auto e ...
- 快学Scala习题解答—第一章 基础
1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on th ...
- Embedding Lua, in Scala, using Java(转)
LuaJ I was reading over the list of features that CurioDB lacks compared to Redis , that I’d previou ...
- 快学scala
scala 1. scala的由来 scala是一门多范式的编程语言,一种类似java的编程语言[2] ,设计初衷是要集成面向对象编程和函数式编程的各种特性. java和c++的进化速度已经大不如 ...
- SDP(13): Scala.Future - far from completion,绝不能用来做甩手掌柜
在前面几篇关于数据库引擎的讨论里很多的运算函数都返回了scala.Future类型的结果,因为我以为这样就可以很方便的实现了non-blocking效果.无论任何复杂的数据处理操作,只要把它们包在一个 ...
- 给Java开发者的Scala教程
author:Michel Schinz,Philipp Haller 1. 简介 本文将该要的介绍Scala语言和其编译.这里假设读者已经有一定的java开发经验,需要概要的了解他们可以用Scala ...
- 理解Scala - 核心规则
看到这里有几个有意思的 规则,转载于此: Read Eval Print Loop (REPL) REPL在Scala里面指的是直接运行scala.exe进入的交互式命令行模式.广义上讲,也泛指那些在 ...
- Scala学习——Brief Scala Tutorial
因为Spark项目需要,学习Scala编程. 从官网文档入手:http://www.scala-lang.org/documentation/ 首先从他的Older Documentation入手. ...
随机推荐
- IDEA 部署spring Cloud
Spring cloud Eureka Eureka Server,注册中心 Eureka Client,所有要进行注册的微服务通过Eureka Client 连接到 Eureka Server ,完 ...
- React学习之路之创建项目
React 开发环境准备 IDE工具 visual studio code 开发环境 开发环境需要安装nodejs和npm,nodejs工具包含了npm. nodejs下载官网:https://nod ...
- H5 选择图片上传及预览
<div class="sctp"> <img src="img/sczp.png" id="photo" alt=&qu ...
- 小白开学Asp.Net Core 《八》
小白开学Asp.Net Core <八> — — .Net Core 数据保护组件 1.背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)这 ...
- 关于使用PreApplicationStartMethod实现module注册问题
在使用PreApplicationStartMethod实现module注册问题发现一个问题: //用PreApplicationStartMethod实现自注册模块 [assembly: PreAp ...
- 基于YOLO3对图像加框的函数draw_image()
def draw_bbox(image, bboxes, class_i, show_label=True): # 将中心点坐标与w,h通过变化为左上角与右下角坐标 bboxes_change = n ...
- loadrunner 基本操作
1.录制(录制选项) 2.回放(运行时设置) 3.添加事物 4.参数化 5.内容检查 6.添加集合点 1.在脚本中添加集合点函数如下: lr_rendezvous("集合点") / ...
- AB PLC简述
一. PLC基础概念 PLC:可编程序控制器是一种数字运算的电子系统,专为在工业环境下应用而设计.采用可编程的存储器,用来在内部存储执行逻辑运算.顺序控制.定时.计算和算术运算等操作的指令,并通过数 ...
- Linux服务管理之ntp
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要 ...
- 指针专题6-空指针NULL和void指针
1 NULL指针 一个指针变量可以指向计算机中任何一块内存,不管该内存有没有被分配,也不管该内存有没有使用权限,只要把地址给他,他就可以指向.C语言没有一种机制保证指向内存的正确性,程序员必须自己提高 ...