Scala Essentials: 字符串内插值
时间:2022-05-07
本文章向大家介绍Scala Essentials: 字符串内插值,主要内容包括f""、raw、自定义插值函数、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
字符串插值 Scala是一门高度可扩展性的程序设计语言,保持微小的内核,但具有无穷大的扩展能力。例如,「字符串内插」功能,Scala语言并不是原生地支持该特性,而是通过类库的扩展来实现的。
println(s"$name is $age years old.") 相对于Ruby的字符串内插功能,Scala在字符串前加入s的前缀,显得不是那么优雅,但如此的设计换取了良好的可扩展性:
支持其他形式的字符串的内插功能,例如s, f, raw; 支持用户自定义字符串的内插功能; 剖析本质
package scala
case class StringContext(parts: String*) {
def s(args: Any*): String = ???
def f(args: Any*): String = ???
def raw(args: Any*): String = ???
}
s其本质仅仅是一个函数而已。
f""
f函数支持格式化的字符串内插功能;
f"$name%s is ${height}%2.2f meters tail"
//等价于
"%s is %2.2f meters tail".format(name, height)
但是,String.format可读性相对于f较差。
raw
raw表示在不转义字符场景下的字符串内插,类似于"""string"""三引号的字符串常量。
raw"anb"
//等价于
"""anb"""
自定义插值函数
可以自定义字符串的内插的定义,彻底体现了Scala可扩展性的哲学思维。例如,定义JSON的字符串表示。
implicit class JsonHelper(val sc: StringContext) extends AnyVal {
def json(args: Any*): JSONObject = ???
}
val conf = json"{ a: $a }"
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- wecenter反序列化造成任意SQL语句执行
- SAP Spartacus 读取payment detail数据的API
- SRCMS 多处越权+权限提升管理员漏洞
- SAP Spartacus把指定产品添加到购物车的API
- MyBatis源码解析之基础模块—Plugin
- php框架slim架构上存在XXE漏洞(XXE的典型存在形式)
- 个人博客搭建
- 安全箱子的秘密
- Linux 机器 CPU 毛刺问题排查
- phpwind 利用哈希长度扩展攻击进行getshell
- dotnet 构建 SourceRoot items must include at least one top-level item when DeterministicSourcePaths is
- Magicodes.IE 2.4版本发布
- EC2磁盘扩容-DiskPressure
- 谈一谈php://filter的妙用
- 新型php漏洞挖掘之debug导致的安全漏洞(Edusoho)