Как считать целое число в Erlang?

В корне вашего приложения вам нужно запустить его с помощью. Это позволяет вам использовать виджеты ScopedModelDescendent ниже в дереве.

ScopedModel<AppModel>(
    model: AppModel(),
    child: Resources())

Где бы вы ни отображали свои Ресурсы, убедитесь, что они обернуты, как указано выше, тогда вы сможете использовать эту модель ниже в своем дереве.

6
задан Sungwon Jeong 27 March 2009 в 01:58
поделиться

5 ответов

1> {ok, [X]} = io:fread("input : ", "~d").
input : 10
{ok,"\n"}
2> X.
10
3> {ok, [A,B]} = io:fread("input : ", "~d,~d").
input : 456,26
{ok,[456,26]}

Это все.

11
ответ дан 8 December 2019 в 12:22
поделиться

Существуют различные функции в OTP, чтобы помочь Вам преобразовать строку в целое число. Если Вы просто читаете строку от пользователя (до новой строки, например), Вы можете оценивание ее с функцией to_integer(String) в string модуль:

string:to_integer(String) -> {Int,Rest} | {error,Reason}

Существует также list_to_integer(String) BIF (Встроенная функция, просто звоните без модуля), но это не является столь же прощающим как string:to_integer(String) функция:

list_to_integer(String) -> int()

Вы получите a badarg исключение, если строка не содержит целое число.

4
ответ дан 8 December 2019 в 12:22
поделиться

Erlang представляет строки как списки целых чисел, которые являются в определенном диапазоне. Поэтому вход будет числом, которое представляет символ "1", Вы могли вычесть смещение для получения фактического. Число, извините не имейте VM здесь для тестирования решения.

0
ответ дан 8 December 2019 в 12:22
поделиться

Если вы используете строку: to_integer / 1, убедитесь, что значением Rest является пустой список []. Функция извлекает целое число, если оно есть, из начала строки. Это не гарантирует, что полный ввод преобразуется в целое число.

string:to_integer(String) -> {Int,Rest} | {error,Reason}

Пример:

{Int, Rest} = string:to_integer("33t").
Int.  % -> 33
Rest. % -> "t"

Зачем проверять? Если палец пользователя поскользнулся и нажал «t» вместо 5, то предполагалось ввести 335, а не 33.

2
ответ дан 8 December 2019 в 12:22
поделиться

Попробуйте напечатать число с помощью ~ w вместо ~ p :

1> io:format("~w~n", [[10]]).
[10]
ok
2> io:format("~p~n", [[10]]).
"\n"
ok

Спецификатор формата ~ p пытается выяснить, может ли список быть строкой, но ~ w никогда не догадывается; он всегда печатает списки в виде списков.

2
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: