Swift: печать разделителя без добавления пробела между элементами массива - PullRequest
0 голосов
/ 08 мая 2018

У меня есть этот код:

let newArray = [4, 6, 7, 12].reversed().map{print($0, terminator:"")}

и это даст мне такой вывод:

12764

Я ожидал: 12 7 6 4

Как вывести это с пробелом между целыми числами?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Это похоже на неправильное использование печати. Почему бы не использовать joined(separator:) для построения выходной строки:

let output = [4, 6, 7, 12].reversed().map { String($0) }.joined(separator: " ")

print("\"" + newArray + "\"")

Это вставит только пробелы между элементами, не поставит нежелательный пробел в конце, а затем выведет только одну новую строку в конце, чтобы сбросить вывод в консоль.

Выход выше

"12 7 6 4"
0 голосов
/ 08 мая 2018

Проблема заключается в том, что вы явно указываете оператору print, что в качестве терминатора следует указывать пустой String, отсюда и проблема. Если вы измените terminator на " ", ваш код будет работать нормально.

Кстати, бессмысленно map результат print, который равен Void. Я полагаю, вы просто хотели позвонить forEach.

[4, 6, 7, 12].reversed().forEach{print($0, terminator:" ")}

Чтобы на самом деле увидеть вывод, вам также нужно вызвать print(""), так как буфер печати сбрасывается в консоль только на новых строках, и поскольку в forEach терминатор явно установлен на пробел, нет добавлена ​​новая строка.

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