像表达式一样使用foreach

时间:2019-04-04 09:02:13

标签: kotlin

我想使用一个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”

2 个答案:

答案 0 :(得分:4)

您可以使用joinToString功能:

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

答案 1 :(得分:2)

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

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