scala中的eval,执行字符串表达式

scala中类似python中的eval方法 python中eval vs scala中eval scala执行字符串中的代码 package com.yy.reflectLearn import scala.reflect.runtime.currentMirror import scala.reflect.runtime.universe.runtimeMirror import scala.tools.reflect.ToolBox import javax.script.ScriptEngineManager objec... 阅读详情

想实现如下执行字符串表达式的能力(类似python中的eval)


var data = "1+2"
prinln(eval(data))

>>> 3

方案1:

import scala.reflect.runtime.universe
import scala.tools.reflect.ToolBox
val tb = universe.runtimeMirror(getClass.getClassLoader).mkToolBox() tb.eval(tb.parse("""println("hello!")"""))

方案2:

import com.twitter.util.Eval
val eval = new Eval
eval.apply[你想要的类型](字符串表达式)
//例如
eval.apply[Int]("1+2")

方案3:

此法能实现一些简单的表达式,复杂的可能报错
优点:不用三方jar包

import javax.script.ScriptEngineManager

val engine = new ScriptEngineManager().getEngineByName("scala")
engine.eval(expr)

易错:

可能有人会想利用字符串的能力,得到想要输出的字符串。

val result=s"${你想执行的字符串表达式}"
val age=20
val result=s"${age == 25}"//得到"false"

//实际长,当你传输字符串的时候
val result=s"${\"age == 25\"}"//得到的还是你的字符串本身

参考:
https://www.includehelp.com/code-examples/scala-using-string-interpolation-to-evaluate-expressions.aspx
https://stackoverflow.com/questions/39142979/dynamic-code-evaluation-in-scala
https://users.scala-lang.org/t/using-scala-as-a-java-scriptengine/4524

局部路径规划算法 - B样条曲线(B-spline Curves) 本文详解了B样条以及代码实现 阅读详情

相关推荐

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

Scala版本的eval()实现

Scala版本的eval()实现 python的eval()函数可以执行一个字符串表达式,并返回表达式结果。但是scala中并没有改方法。查了很多资料,找到了一个可以类似python的eval()函数执行字符串表达式的方法。 代码实现: import javax.script.Compilable import scala.tools.nsc.Settings import scala.tools.nsc.interpreter.{IMain, JPrintWriter} /** * 输入一个字符串,对

yxjwhhhh的博客 564

Python爬取京东商品数据保姆级教程(附源码及效果图)

本文介绍了一个基于Python的京东商品数据爬取教程,适合入门级开发者使用。文章详细讲解了从安装依赖库(DrissionPage、pandas等)到完成数据爬取的全过程,包括:1. 模拟用户搜索操作;2. 解析商品标题、价格、销量等关键信息;3. 处理复杂数据格式(如转换万级销量);4. 数据存储与Excel导出。教程提供了完整的封装函数,支持自定义搜索关键词和爬取数量,并包含错误处理和多种元素定位方式。最终数据会按时间戳命名导出为Excel文件,方便用于课程作业或毕业设计。

weixin_46449236的博客 1874

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 v...

weixin_30235225的博客 527

大连理工大学中文情感词汇本体库(含情绪分析代码)

中文文本数据的情绪计算昨天如何对微博推文进行情绪分析(细粒度情感分析)介绍了英文的NRC情绪词典。虽然支持中文,但由于制作问题,导致并不完全适应中文场景。今天介绍大连理工大学中文情感...

大邓和他的Python 4万+

细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

wenchm的博客 1640

java scala脚本引擎_java – 如何使用scala作为脚本语言设置jsr223脚本

到目前为止,我已经为scala尝试了jsr223脚本的sling实现,但是无法正确设置它.当我这样做:public static void main(String[] args) {try {new ScriptEngineManager().getEngineByName("scala").eval("object HelloWorld {def main(args: Array[String]...

weixin_42358539的博客 309

【斯坦福计网CS144项目】环境配置 & Lab0: ByteStream

前言 感觉学了不少 C++ 编程的知识和技术但比较缺少实践,于是打算找一些项目跟着做一做。 首先安利一个自学网站 CS自学指南,北大的同学做的,汇总了很多国内外高校 CS 相关的高质量公开课,其中大部分是有课程项目的。翻了翻感觉 Stanford 的这门 CS144 计网课的 Lab 比较有趣,难度也不错,就是它了! 课程网址:CS 144: Introduction to Computer Networking 我跟的是 2021 Fall 学期的版本。 准备工作 在上面的网站中先把 8 个实验的文档(

アルタイル 8165

Scala字符串常用函数

记录了scala中字符串处理相关函数并给出示例。

摇光65535的博客 1810

SpringBoot与Flowable整合:构建高效审批工作流的实战指南

本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。

qsc9012345的博客 519

【超详细】安装了anaconda后,Ubuntu18+COLMAP配置疯狂踩坑踩至魔怔的记录

本博客收集了博主在Ubuntu18系统中编译COLMAP所遇到的困难,提供了解决方法,也收集了目前网上大多数的坑,除此之外,也为Ubuntu18系统下COLMAP的安装提供了一种新的路径。

Stay_Foo_lish的博客 3511

【技术分享】搭建java项目引入外部依赖教程

动手实践了以上的java项目搭建过程,就熟悉了java项目开发流程。这样,我们可以快速的调试运行起来其他人开发的项目,也可以快速的自己搭建环境进行java开发。

一个程序员 6301

华为OD机试真题2026双机位C卷 Python&JS 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 318

eval()

http://www.shsay.com   eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 如:eval("2+3") // 返回 5 (定义用法详见w3c:http://www.w3school.com.cn/jsref/jsref_eval.asp) 这里重点讲用eval() 将字符串转换成json对象: 如:var dataObj=eval("...

叼子的优快云 693

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Scala => 用法总结

10.1 =>这是个各种诡异用法的标记10.1.1 创建4.2=>右边是函数体,左边表示函数的参数类型.(x: Int) => x + 1 10.1.2 无参匿名函数() => T 相当于new Function0[T] //T是返回类型 下面是示例代码scala> val f: () => Unit = () => { println("x")} f: () => Unit =

Dean Chen的专栏 5668

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Scala中=>的作用

Scala中的=>符号可以看做是创建函数实例的语法 例如:A => T ,A,B => T 表示一个函数的输入类型为A或者A,B 返回值为T下面的实例:scala > val f: Int => String = myInt => "The value of myInt is: " + myInt.toString() f: Int => String = <function1> scala> pr

qq_26479655的博客 4241

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

scala学习

学习资料一,做的比较炫酷的文档,看着很舒服 http://zh.scala-tour.com/#/funtional-contents 下面是一个为java程序员编写的scala入门教程,内容不多但是可以用来快速了解scala吧 原帖地址:http://dataunion.org/14967.html,这篇文章是英文原稿的翻译,google上还有中英文对照稿,有兴趣的也可以看下: 本文是《A

決心的专栏 3414

scala =>符号含义总结

It has several meanings in Scala, all related to its mathematical meaning as implication. In a value, it introduces a function literal(通译为匿名函数,有时候也叫函数显式声明,函数字面量), or lambda(参考lambda表达式的文章,其实也是匿名

陆云子安的专栏 1万+

eval在类型转换的妙用

如何将字符串转换成布尔型? bool('True')   bool('False')均转换成True bool('')转换成False eval('True')  eval('False')就能转换成True与False 当通过命令端sys.argv来获取某布尔型时,这个方法很奏效...

ningyanggege的博客 1726

运行Scala代码的各种方法

对于本教程中的运行示例,请确保在计算机上安装了最新的Java发行版和Scala发行版 ,并且环境变量SCALA_HOME指向scala安装的基本目录,并且%SCALA_HOME%/ bin已添加到PATH变量。 使用Scala REPL 它基本上是命令行交互外壳,称为REPL,是Read-Eval-Print-Loop的简称。 要启动scala REPL,请打开命令提示符,然后只需键...

2894

Scala REPL实现原理与Spark Shell简介

Scala REPL实现原理与Spark Shell简介 版权声明:本文为博主原创文章,未经博主允许不得转载。 手动码字不易,请大家尊重劳动成果,谢谢 作者:http://blog.youkuaiyun.com/wang_wbq Scala是我最喜欢的语言之一,与Java语言不同,Scala语言十分简洁,自带了很多的算子可以帮助我以最快的时间去实现我要实现的功能,因此可以留出更...

wang_wbq的博客 6757

Java语言的动态性支持

Java代码      一、脚本语言的支持      JSR 223中规范了在Java虚拟机上运行的脚本语言与Java程序之间的交互方式。JSR 233是JavaSE6的一部分,在Java表中API中的包是javax.script。目前Java虚拟机支持比较多的脚本语言,比较流行的有JavaScript、Scala、JRuby、Jython和Groovy等。  1.

novelly的专栏 1345

Scala传名参数(By-Name)

1.=&gt; 在了解Scala的By-Name参数之前,先了解下“=&gt;”在Scala中有几种用法: 1.对于值,“=&gt;”相当于lambda表达式。如: scala&gt; List(1,2,3).map{(x: Int) =&gt; x*2} res0: List[Int] = List(2, 4, 6) 2.对于类型,“=&gt;”两端的类型(如,A =&gt; ...

weixin_33805992的博客 267

Java执行Scala脚本

public class Test { private static Logger log = Logger.getLogger(Test.class); private static ScriptEngine engine; @BeforeClass public static void init() { engine = S...

jxluoix的专栏 1167
上一篇: Scala测量程序运行时间
下一篇: 中国城市编码
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值