Ale*_*x R 11 language-features scala language-design
这不仅仅是一个空闲的讽刺...我想知道是否有人知道Scala不支持插值类似于Groovy和其他"语法上更好的Javas"的实际设计原因?
例如
var str1 = "World";
var str2 = "Hello, ${str1}";
ret*_*nym 16
建议的解决方案是在使用时省略空格+.
"a="+a+", b="+b
Run Code Online (Sandbox Code Playgroud)
有人建议使用瑞士键盘布局使这种键入非常自然,因此Scala的创建者感觉不到足够的痛苦来证明在这个方向上使语言变得复杂:)
我觉得字符串插值是不必要的,因为它不比连接简洁得多:
val str2 = "Hello, ${str1}!"
val str2 = "Hello, "+str1+"!"
Run Code Online (Sandbox Code Playgroud)
争论说字符串上的"+"运算符应该没有空格格式化,Martin Odersky说,
使用新约定,字符串替换(通常在Scala列表中提出)的需求几乎消失.相比:
Run Code Online (Sandbox Code Playgroud)"test results: ${result1}, ${result2}"与上面的第一个版本.你已经为每个替换保存了一个字符,几乎不值得新的语法约定.换句话说,编写了Scala的字符串替换语法
Run Code Online (Sandbox Code Playgroud)"+...+"代替
Run Code Online (Sandbox Code Playgroud)${...}或其他类似的提案.另一方面,如果你坚持+周围的空间,故事会变得不那么令人信服.
顺便提一下,请参阅博客文章" Scala中的字符串插值 ",它使用反射进行模拟.
从Scala 2.10.0开始,Scala确实支持String Interpolation
例:
val name = "James"
println(s"Hello, $name") // Hello, James
Run Code Online (Sandbox Code Playgroud)
字符串插值当前正被添加到主干中的Scala,请参阅Martin的这个提交,因此它可能在Scala 2.10中可用.另请参阅第一个测试用例示例:https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/run/stringInterpolation.scala
| 归档时间: |
|
| 查看次数: |
3803 次 |
| 最近记录: |