Как мы тестируем тип Range в Elixir? - PullRequest
0 голосов
/ 12 октября 2018

Как мы тестируем тип Range?Что будет эквивалентно is_range?

Erlang/OTP 21 [erts-10.1] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> a = 1..10
1..10
iex(2)> is_list a
false
iex(3)> i a
Term
  1..10
Data type
  Range
Description
  This is a struct. Structs are maps with a __struct__ key.
Reference modules
  Range, Map
Implemented protocols
  IEx.Info, Enumerable, Inspect
iex(4)> 

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Зачем вам вообще нужна эта функция?Range является структурой.У нас есть сопоставление с образцом везде, где это может понадобиться.Просто сопоставьте шаблон с %Range{} и все готово.

0 голосов
/ 13 октября 2018

Как уже упоминалось в других ответах, Range - это структура, и вы можете сопоставить ее с шаблоном. Вот как вы можете проверить это в ExUnit:

assert %Range{} = 1..5

Если вы хотите проверить начальные / конечные значения, вы можете сделать это:

assert %Range{end: 20} = 10..20
0 голосов
/ 12 октября 2018

В ядре нет эквивалента, но вы можете создать его самостоятельно:

def is_range(%Range{}), do: true
def is_range(_), do: false
...