Kotlin 像表达式一样使用foreach

Kotlin 像表达式一样使用foreach,kotlin,Kotlin,我想使用foreach循环作为一个表达式(只是为了好玩),但我不能这样做,我被它卡住了 在我的示例中,我想将一个字符串转换为该字符串的字节码表示形式 在我看来,什么东西起作用了,但很难看 fun bytecoderepr(arg: String):String { var bcr:String = "" arg.toByteArray().forEach { bcr += it.toString() } return bcr } 按预期工作,并返

我想使用foreach循环作为一个表达式(只是为了好玩),但我不能这样做,我被它卡住了

在我的示例中,我想将一个字符串转换为该字符串的字节码表示形式

在我看来,什么东西起作用了,但很难看

fun bytecoderepr(arg: String):String {
    var bcr:String = ""
    arg.toByteArray().forEach {
        bcr += it.toString()
    }
    return bcr
}
按预期工作,并返回“gconf400”的“10399111110102524848”

什么不起作用,但我想实现

fun bytecoderepr(arg: String):String =
    arg.toByteArray().forEach().toString()
无法编译,因为foreach需要“操作”

我可以将数组转换为字符串,但它不会返回字节码表示形式,而是转换为字节码字符串

fun bytecoderepr(arg: String):String =
    arg.toByteArray().toString()
“回报”[B@1a407d53“

您可以使用以下功能:

fun bytecoderepr(arg: String) = arg.toByteArray().joinToString("")

另一个选项是,您可以执行
java.util.Arrays.toString(arg.toByteArray())


joinToString(“”)相比,它的方法调用更少,结构更紧凑,但灵活性更低(例如:无法指定分隔符)。

是的,但它打印
[103、99、111、110、102、52、48、48]
是的,答案中提到了。谢谢,这太完美了!