入力(引数)に基づいて文字列を作成したい次のコードがありますが、答えが正しくありません。 args(0)はパス、args(1)は「+」のようなオペランド、args(2)は数値です(そしてそれらの間にスペースを入れたい:
//some code ..
var Statement=""
for (j<-0 to 2)
{
if (Files.exists(Paths.get(args(j)))){
Statement.concat(inputXml)
Statement.concat(" ")
}
else{
Statement.concat(args(j))
Statement.concat(" ")
}
println(args(j))
println(Statement)
}
println(Statement)
//some code ...
出力は空白です!私は このリンクを参照として を使用しました。これについて私を助けてくれませんか。私はScalaが初めてです。ありがとう。
String.concatは、まったく新しいStringオブジェクトを返します。現在のStatement変数はまったく変更されません。次のことはお勧めしませんが、技術的に変更する必要があるのは、Statementをすべてのconcat呼び出しの戻り値に再割り当てすることだけです。
//some code ..
var Statement=""
for (j<-0 to 2)
{
if (Files.exists(Paths.get(args(j)))){
Statement = Statement.concat(inputXml)
Statement = Statement.concat(" ")
}
else{
Statement = Statement.concat(args(j))
Statement = Statement.concat(" ")
}
println(args(j))
println(Statement)
}
println(Statement)
//some code ...
よりパフォーマンスの高いソリューションは、代わりに StringBuilder を使用することです。
val Statement = StringBuilder.newBuilder
Statement.append(...)
println(Statement.toString)