Size: a a a

2020 May 18

L

Lexa in Modern::Perl
Примерно как XSD для XML
источник

AP

Anton Petrusevich in Modern::Perl
Lexa
согласно json/yaml схеме
основной вопрос в смысле. у перла нет разницы, у него операторы приводят к нужным типам. вот для других яп может быть разница
источник

L

Lexa in Modern::Perl
Anton Petrusevich
основной вопрос в смысле. у перла нет разницы, у него операторы приводят к нужным типам. вот для других яп может быть разница
Тут я даже не спорю. Но интуиция подсказывает, что ТС слишком глубоко копнул и ему это совершенно не нужно.
источник

L

Lexa in Modern::Perl
Ему нужно просто провалидировать входные данные / ответ.
источник

AP

Anton Petrusevich in Modern::Perl
я писал валидатор джейсон-схем, я намеренно отказался там проверять именно этот случай, зато сделал coersion
источник

AP

Anton Petrusevich in Modern::Perl
то есть, это важно правильно в ответе отдать, но в запросе перлу пофиг, можно расслабиться
источник

L

Lexa in Modern::Perl
Lexa
Посмотри на JSON::Validator
Ну так тут и есть coerce
источник

AP

Anton Petrusevich in Modern::Perl
sub isnum ($) {
   return 0 if $_[0] eq '';
   $_[0] ^ $_[0] ? 0 : 1
}
источник

AP

Anton Petrusevich in Modern::Perl
Yevhen Sabodash
у меня обратная ситуация, ко мне приходит
функция выше. работает так: xor для чисел сам с собой даёт нуль, что ложь, а для строк делает строку из nul символов, что не пустая строка
источник

AP

Anton Petrusevich in Modern::Perl
Lexa
Ну так тут и есть coerce
у меня вот что есть:  JSV::Compiler
источник

AP

Anton Petrusevich in Modern::Perl
только именно для входящих данных я отказался от мысли проверять разницу между "1" и 1. это меня выбешивало в других местах раньше
источник

YS

Yevhen Sabodash in Modern::Perl
Разница в точности, для 1 разницы нет, но когда количество значащих знаков более 15 я хочу знать наверняка, что мне прислали именно строку, а не число, которое могло округлится
источник

AP

Anton Petrusevich in Modern::Perl
bignum что ли?
источник

AP

Anton Petrusevich in Modern::Perl
нормальное, не очень большое число, это около 18-19 знаков
источник

AP

Anton Petrusevich in Modern::Perl
я, кажется начинаю понимать. я сталкивался с округлениями джаваскрипта, да.
источник

VG

Vadim Goncharov in Modern::Perl
Anton Petrusevich
функция выше. работает так: xor для чисел сам с собой даёт нуль, что ложь, а для строк делает строку из nul символов, что не пустая строка
фига! годный приём!
источник

VG

Vadim Goncharov in Modern::Perl
остается один нюанс, если оба флага стоят, какой же ксор выполнит сам перл - строковый или числовой? :)
источник

AP

Anton Petrusevich in Modern::Perl
Vadim Goncharov
фига! годный приём!
спёр с перлмонка
источник

VG

Vadim Goncharov in Modern::Perl
Anton Petrusevich
я, кажется начинаю понимать. я сталкивался с округлениями джаваскрипта, да.
где-то в BotAPI телеги даже гарантировалось, что числа не более 52 бит
источник

AP

Anton Petrusevich in Modern::Perl
ага:
$ perl -E 'say sprintf "%f", 99999999999.0123 + 0.00231432423'
99999999999.014618

js:
99999999999.0123 + 0.00231432423
99999999999.01462
источник