如果您在单个语句中执行某些操作,例如“abc”+ stringval +“abc”,那么是一个不可变的字符串副本,还是两个(注意 abc 和 123 在编译时是常量)
奖励回合:使用像下面这样的 StringBuilder 会产生更多还是更少的开销?
def surround(s:String, ss:String):String = {
val surrounded = new StringBuilder(s.length() + 2*ss.length(), s)
surrounded.insert(0,ss)
surrounded.append(ss)
surrounded.mkString
}
或者是否有我不知道的更惯用的方式?
最佳答案
它的开销比连接少。但是您示例中的插入效率不高。以下内容更简洁一些,仅使用追加来提高效率。
def surround(s:String, ss:String) =
new StringBuilder(s.length() + 2*ss.length(), ss).append(s).append(ss).mkString
关于string - 围绕 Scala 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352764/