我正在尝试解析像
这样的errorCode4011=Error thrown expected: {0} found: {1}.
在kotlin中使用Message.format
loggingService.logTheMsg("4011", arrayOf("${expectedVal}", "${actualVal}"))
在logTheMsg中我正在使用此代码:
var errorMessage = props.getProperty(errorCode)
errorMessage = MessageFormat.format(errorMessage as String, args)
println("${errorMessage}.")
但输出为:
Error thrown expected:[Ljava.lang.String;@38f3b4ba found: {1}.
它可能有助于回答,同样的事情在java中实现:
parse(value, new String[]{"firstName","lastName"});
在解析中:
parse(String value, String[]args) {
value = MessageFormat.format((String) value, args);
System.out.println(value);
}
打印: 我的名字是firstName lastName
答案 0 :(得分:2)
为了消除歧义,Kotlin要求在数组上使用'spread operator'(*),它将作为vararg传递,i。即
loggingService.logTheMsg("4011", *arrayOf("${expectedVal}", "${actualVal}"))
此外,"${expectedVal}"
应替换为expectedVal
:
loggingService.logTheMsg("4011", *arrayOf(expectedVal, actualVal))
当然,您可以按照预期使用varargs:
loggingService.logTheMsg("4011", expectedVal, actualVal)