используя foreach как выражение - PullRequest
2 голосов
/ 04 апреля 2019

Я хотел бы использовать цикл foreach в качестве выражения (просто для удовольствия), но я не в состоянии это сделать, и я застрял на нем

В моем примере я хочу преобразоватьСтрока в байт-кодовое представление этой строки.

Что работает, но на мой взгляд это некрасиво

fun bytecoderepr(arg: String):String {
    var bcr:String = ""
    arg.toByteArray().forEach {
        bcr += it.toString()
    }
    return bcr
}

Работает как положено и возвращает "10399111110102524848" для "gconf400"

Что не работает, но я быхотел бы достичь

fun bytecoderepr(arg: String):String =
    arg.toByteArray().forEach().toString()

Не будет компилироваться, потому что foreach требует «действия».

Я могу преобразовать мой массив в строку, но он не возвращает представление байтового кода, а преобразование в строкубайт-кодов

fun bytecoderepr(arg: String):String =
    arg.toByteArray().toString()

Возвращает "[B @ 1a407d53"

Ответы [ 2 ]

4 голосов
/ 04 апреля 2019

Вы можете использовать функцию joinToString :

fun bytecoderepr(arg: String) = arg.toByteArray().joinToString("")
2 голосов
/ 04 апреля 2019

Другой вариант, вы можете сделать java.util.Arrays.toString(arg.toByteArray()).

Это меньше вызовов методов и компактнее, чем joinToString(""), но менее гибкое (например, не может указывать разделитель).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...