首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >scala中的变量字符串插值

scala中的变量字符串插值
EN

Stack Overflow用户
提问于 2019-07-25 12:19:15
回答 2查看 66关注 0票数 2

很明显,在scala docs中,您可以使用字符串插值:

代码语言:javascript
运行
复制
val name = "James"
println(s"Hello, $name")  // Hello, James

但是,在格式例如"Hello, $name"在变量中的情况下,也可以这样做吗?

我尝试过这样的东西:

代码语言:javascript
运行
复制
val name = "James"
val fmt = "Hello, $name"
println(s fmt)
println(s(fmt))

但是,到目前为止,什么都不起作用。这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-25 12:55:01

没有简单的方法可以得到你想要的东西。为了使字符串插值起作用,编译器必须将字符串文字分割成不同的部分,并将它们发送到StringContext进行重构。编译器不会对String变量执行此操作。

您可以自己剪切String值,并将它们发送给StringContext,但您还需要一种方法将变量名( String)转换为正确的值。

有关如何做到这一点的示例,请参阅类似问题的this answer

票数 3
EN

Stack Overflow用户

发布于 2019-07-25 12:28:43

不,这在scala中不起作用。

代码语言:javascript
运行
复制
val name = "James"
val fmt = "Hello, $name"
println(s fmt)
println(s(fmt))

但是你可以像下面这样做

代码语言:javascript
运行
复制
println(s"$fmt")
OR
println(f"$fmt%s")

在字符串插值中,s总是希望双引号作为下一个字符出现,因此s fmt或s(fmt)都不起作用。

你可以在这里找到更多信息https://docs.scala-lang.org/overviews/core/string-interpolation.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57194263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档