Получить код символа

32 views
Skip to first unread message

WWW

unread,
Jun 2, 2018, 5:18:27 PM6/2/18
to Erlang по-русски
Подскажите пожалуйста. Способы получения кода символа. Получаю так: lists:nth(1, "a").
Еще можно получить так: $a. Но с $ работать не понятно как. Мне нужно перебрать строку и получить коды символов, коды обработать, как это уже я сам сделаю. Пока пробую не строку, а список обрабатывать. Вот код:

-module(s4).
-export([start/2, cod/1]).


start([], Acc) -> Acc;

start([Val|B], Acc) ->
R= cod(Val),
start(B, [R | Acc])
.


cod(Val) ->
lists:nth(1, Val)         % получаем код символа
.


Входные данные: s4:start(["a", "b"], []).
Получаю: "ba", а нужно "98 97"
Пробела там нет, это просто для понимания. Код конечно не этот хотелось бы использовать, а в одну строку, лучше всего конструктор списка, можно так же lists:map или lists:foreach

Lev Walkin

unread,
Jun 2, 2018, 5:27:44 PM6/2/18
to erlang-...@googlegroups.com

Каждый символ — это его же код. Просто при печати печатается символ. Вот проверь в репле:

[65, 66, 67]

-- 
Lev
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

WWW

unread,
Jun 2, 2018, 6:50:06 PM6/2/18
to erlang-...@googlegroups.com
Звучит убедительно, только как цифра полученная из буквы попадает в переменную (атом)? Пример:
1> R= $a.
97
2> R.
97
3> R == 97.
true

Вот мне и нужно получить эту цифру и работать с ней. Ну пусть даже будет как Вы сказали, тогда мне нужно строку "ab" перебрать по символу и применить к каждому символу функцию, к примеру чтобы на выходе получить строку: "acbc"

Lev Walkin

unread,
Jun 2, 2018, 7:58:37 PM6/2/18
to erlang-...@googlegroups.com

1. В приведённом примере нет ни одного атома.
2. R — это байндинг («переменная». На самом деле, фактически «постоянная»).
3. $a — это просто иная запись числа 97. Если есть функция, принимающая на входе int(), то в неё можно передать $a, head(“a”), “a”!!0, с идентичным результатом.
4. Атомов тут нет, но если бы были (например, ‘a’ это атом, и a тоже атом), то они равны только самим себе, а всяким числам не равны.

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

-- 
Lev

On Jun 2, 2018, at 15:50, WWW <wad...@Yandex.ru> wrote:

Звучит убедительно, только как цифра полученная из буквы попадает в переменную (атом)? Пример:
1> R= $a.
97
2> R.
97
3> R == 97.
true

Вот мне и нужно получить эту цифру и работать с ней.

--

WWW

unread,
Jun 3, 2018, 6:44:11 AM6/3/18
to erlang-...@googlegroups.com
Я читаю до конца документацию, а форум для того чтобы задавать вопросы, а не посылать к документации. Хорошо, мне нужно строку "ab" перебрать по символу и применить к каждому символу функцию, к примеру чтобы на выходе получить строку: "acbc"
Функцию не обязательно, главное обработать строку, мне интересен вариант с конструктором списка. Естественно полный код, а не сдать читать доки, это я и без подсказки делаю. Спасибо.

Dmitry Dmitriy

unread,
Jun 3, 2018, 10:21:20 PM6/3/18
to Erlang по-русски
Я думаю Лев имел в виду читать для начала не документацию, а какой-нибудь интерпретированный материал, например книгу или туториал. А то у Вас на старте получился перекос в знаниях - в чём-то вы разбираетесь досконально, но общая картина пугающе неверная)) Попробуйте https://github.com/mpyrozhok/learnyousomeerlang_ru, или на бумаге приобретите https://www.labirint.ru/books/450021/

воскресенье, 3 июня 2018 г., 17:44:11 UTC+7 пользователь WWW написал:
Reply all
Reply to author
Forward
0 new messages