Перейти к основному содержанию

Новости

Тема: Грабли Perl 6 (Прочитано 16 раз) предыдущая тема - следующая тема

  • inter 😎
  • [*][*][*][*][*]
  • Царь
Грабли Perl 6
Давайте в этой теме поговорим о подводных камнях Perl 6.
В каждом языке программирования есть конструкции, которые делают не то что задумывал программист.

Например сравнение списков:
(1,2,3) == (1,2, ('qwerty'))
# True

['spam', 42] == ['spam', 425]
# True

4 == (1,2,3,4)
# True

{bar => 'spam', foo => 42} == {bar => 'spam', foo => 424}
# True

Оператор == при сравнении списков и хэшей смотрит на список или хэш как на число и поэтому он сравнивает не содержимое, а количество элементов! Чтобы сравнивать содержимое списков и хэшей нужно использовать оператор eqv

https://stackoverflow.com/a/40877528/1577548

Правильное сравнение:
(1,2,3) eqv (1,2, ('qwerty'))
# False

[1,2,3] eqv [1,2,34]
# False

4 eqv (1,2,3,4)
# False

Также в тестах, чтоб сравнить списки и хэши, не используйте функцию is. Вместо неё используйте is-deeply.

продолжение следует ...
  • Последнее редактирование: 11 Ноябрь 2018, 13:11:14 by inter 😎