2015-06-25 88 views
0

当我试图用Integers构建字符串构建时遇到了这个问题。我使用了scala的Stringbuilder并且看到了这个奇怪的行为。scala 2.10 - Stringbuilder构造函数不工作

println(new StringBuilder(1).append(2).append(3)) 
>23 
println(new StringBuilder(1.toString()).append(2).append(3)) 
>123 

我是做了什么错误或只是隐式转换没有发生在构造函数参数和忽略它的默默。

回答

2

constructor需要一个Int启动的能力,这就是为什么你没有看到它在你的字符串输出:

def this(capacity: Int) = this(capacity, "") 
+0

该死的我现在觉得自己很笨 – nir

+0

@nir,一般​​我会建议不要使用构造函数来初始化StringBuilder,只使用append,不要觉得自己很愚蠢,它发生在我们所有人的身上...... – Noah

+0

@Noah为什么不呢?一旦你知道他们的意思,只要相应地使用它们 –

1

您正在使用2个不同的构造函数:

  1. StringBuilder(int capacity):构造一个没有字符的字符串构建器,并由容量参数指定初始容量。
  2. StringBuilder(String str):构造一个字符串生成器,初始化为指定字符串的内容。

所以new StringBuilder(1)返回初始容量1StringBuilder