Вопрос:

Как я могу разобрать строку в целое число с Reasonml / Bucklescript?

reason bucklescript

1636 просмотра

1 ответ

3192 Репутация автора

Я изучаю Reasonml, и я не могу найти ни функции в стандартной библиотеке для этого, ни модулей Bucklescript Js. Есть ли лучший вариант, чем использование сырого JavaScript ?

Прямо сейчас я достигаю этого с помощью этой функции:

let parseint: string => int = [%raw {| x => parseInt(x, 10) |}];
Автор: gabrielperales Источник Размещён: 31.12.2017 07:24

Ответы (1)


8 плюса

602 Репутация автора

Решение

int_of_string(а также float_of_string/ bool_of_string) должен делать то, что вам нужно.

Он находится в стандартной библиотеке, и вы сможете найти его https://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html (этот сайт будет работать лучше для вас, если у вас есть причина -установлено расширение браузера, чтобы он автоматически конвертировал из синтаксиса OCaml в Reason для вас)

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

Как указывает @glennsl, когда Bucklescript догоняет более свежую версию компилятора OCaml чем 4.02.3, вы можете захотеть использовать более безопасные _optварианты, например, int_of_string_optкоторые возвращают Some(number)или Noneвместо, в зависимости от того, насколько вы доверяете вводу, насколько вы хотите чтобы избежать исключений, и как вы хотите справиться с неправильным вводом (это исключение и должно убить программу / стек, или это нормально и должно обрабатываться локально?).

Автор: sgrove Размещён: 31.12.2017 07:42
Вопросы из категории :
32x32