java可变长字符串_具有可变长度的scala字符串插值
scala> def format(n: Int)(i: Int) =
| f"A%%0${n}d" format i
format: (n: Int)(i: Int)String
scala> format(5) _
res0: Int => String =
scala> .apply(21)
res1: String = A00021
编辑:
scala> import scala.tools.reflect._,scala.reflect.runtime._,universe._
import scala.tools.reflect._
import scala.reflect.runtime._
import universe._
scala> val tb = currentMirror.mkToolBox()
tb: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = scala.tools.reflect.ToolBoxFactory$ToolBoxImpl@2d10e0b1
scala> def f(n: Int)(i: Int): String = {
| val code = raw"""f"A$${$i}%0${n}d""""
| tb.eval(tb.parse(code)).asInstanceOf[String]
| }
f: (n: Int)(i: Int)String
scala> val g = f(5) _
g: Int => String =
scala> g(21)
res9: String = A00021
这实际上没有多大帮助 . 你真的想
scala> tb.typecheck(tb.parse(code))
scala.tools.reflect.ToolBoxError: reflective typecheck has failed: illegal conversion character 'k'
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$typecheck$1.apply(ToolBoxFactory.scala:178)
如果格式不好则会抛出 .
scala> val code = raw"""(i: Int) => f"A$${i}%k0${10}d""""
code: String = (i: Int) => f"A${i}%k010d"
scala> tb.typecheck(tb.parse(code))
scala.tools.reflect.ToolBoxError: reflective typecheck has failed: illegal conversion character 'k'
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$typecheck$1.apply(ToolBoxFactory.scala:178)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$typecheck$1.apply(ToolBoxFactory.scala:170)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$11.apply(ToolBoxFactory.scala:148)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$11.apply(ToolBoxFactory.scala:148)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$9.apply(ToolBoxFactory.scala:138)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$9.apply(ToolBoxFactory.scala:138)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$withContext$1$1.apply(ToolBoxFactory.scala:139)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$withContext$1$1.apply(ToolBoxFactory.scala:139)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$7.apply(ToolBoxFactory.scala:137)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1$$anonfun$7.apply(ToolBoxFactory.scala:137)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1.apply(ToolBoxFactory.scala:148)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$transformDuringTyper$1.apply(ToolBoxFactory.scala:121)
at scala.reflect.internal.Trees$class.wrappingIntoTerm(Trees.scala:1716)
at scala.reflect.internal.SymbolTable.wrappingIntoTerm(SymbolTable.scala:16)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.withWrapping$1(ToolBoxFactory.scala:120)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.transformDuringTyper(ToolBoxFactory.scala:121)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.typecheck(ToolBoxFactory.scala:169)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$typecheck$2.apply(ToolBoxFactory.scala:375)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$typecheck$2.apply(ToolBoxFactory.scala:367)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.liftedTree2$1(ToolBoxFactory.scala:355)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.apply(ToolBoxFactory.scala:355)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl.typecheck(ToolBoxFactory.scala:367)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl.typecheck(ToolBoxFactory.scala:27)
... 32 elided
scala> val code = raw"""(i: Int) => f"A$${i}%0${10}d""""
code: String = (i: Int) => f"A${i}%010d"
scala> tb.typecheck(tb.parse(code))
res19: tb.u.Tree =
((i: Int) => ({
val arg$macro$9: Int = i;
new scala.collection.immutable.StringOps("A%010d").format(arg$macro$9)
}: String))
java可变长字符串_具有可变长度的scala字符串插值相关推荐
- 扫盲!Java可变长数组,看这篇就对了!
来自:ImportNew/覃佑桦 | 责编:乐乐 链接:tutorials.jenkov.com/java-performance/resizable-array.html 有时我们希望将把数据保存在 ...
- Java可变长参数列表
可以把类型相同但个数可变的参数传递给方法,方法的参数声明为: (类型名--参数名) 在方法声明中,指定类型后紧跟着省略号(...),只能给方法中指定一个可变长参数,同时该参数必须是最后一个参数,任何常 ...
- oxp开放型可变长协议_培养开放型领导者
oxp开放型可变长协议 在红帽,我们有句谚语:并不是每个人都需要成为人事经理,但是每个人都应该成为领导者. 对于许多人而言,这需要深刻思考领导者的思维方式. 但是从某些方面来说,这是我们所有人直观了解 ...
- java 补齐字符串_使用String.format()格式化字符串,java自动补全自增长字符串
JDK1.5中,String类新增了一个很有用的静态方法String.format(): format(Locale l, String format, Object... args) 使用指定的语言 ...
- python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...
作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html python中字符串对象提供了很多方法来操作字符串,功能相当丰富. p ...
- [转载] python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...
参考链接: python中的字符串string center 作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html pyth ...
- c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- bootstrap table格式化字符串_你要的PHP字符串处理函数都在这了!
php中文网最新课程 每日17点准时技术干货分享 打印输出函数 说明 echo 输出一个或多个字符串 print 输出字符串 printf 输出格式化字符串 sprintf Return a form ...
- java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...
一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...
最新文章
- log4net简介(三)之无法写入日志
- JavaScript扩展运算符(...)
- mybatis教程--原始方式和mapper方式开发dao详解
- Python 杨辉三角形的简单实现
- linux练习手册,Linux操作习题集(1)
- 本地如何安装运行多个vue.js项目?
- Netty工作笔记0072---Protobuf内容小结
- 自动化测试学习笔记(一)HTML概念
- 摩根大通分析:随着灰度资金流动缓慢,比特币能否重回4万美元仍存疑问
- C++ 文字常量与常变量
- 2.Rails程序框架
- 992. Sort Array By Parity II - LeetCode
- C语言-基础例题55道
- 井下作业类毕业论文文献有哪些?
- linux播放csf文件
- Kali Linux上最佳安全测试工具
- OpenCV python
- matlab中nc值是什么意思,科学网-.nc数据读取详细资料matlab2010a及后面的版本-张凌的博文...
- 计算机入门在线阅读,计算机应用基础教程(Windows 7+Office 2010)
- win10系统怎么qq远程连接到服务器,QQ远程控制功能在Win10系统上无法使用怎么解决...
热门文章
- Ubuntu20.04 Desktop image 添加快捷方式
- MySQL三大范式详解(小白也能懂哦)
- 数据库 / 事务的隔离级别
- 启明云端分享| ESP32-S3 + 480*480分辨率的2.1寸圆屏旋钮方案
- 高德推出查岗功能_新型「查岗」工具?高德推出「家人地图」新功能
- linux关于界面的API,linux系统基础知识(ABI和API)
- asp.net代码审计起始篇之系统搭建
- BZOJ(8) 1053: [HAOI2007]反素数ant
- 蓝桥杯练习题十六进制转十进制
- Timus题目中测试数据数量的计算