Широковещательная версия функции in () или оператора? - PullRequest
0 голосов
/ 26 июня 2018

Рассмотрим массив, скажем, от 0 до 4. Я хочу проверить, есть ли каждый элемент в списке, и вернуть массив логических значений. Вызов in возвращает единственное логическое значение, потому что этот левый массив не является элементом правого массива:

> a = 0:4;
> a in [1, 2]
false

Есть ли у Джулии широковещательная версия функции in() или оператора in, который возвращает массив, подобный этому вызову map, и лямбда-функцию?

> map(x -> x in [1,2], a)
5-element Array{Bool,1}:
 false
  true
  true
 false
 false

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете использовать широковещание, но вы должны сказать Джулии, что второй аргумент не должен повторяться, поэтому вы должны сделать:

julia> in.(a, [[1,2]])
5-element BitArray{1}:
 false
  true
  true
 false
 false

или

julia> in.(a, Ref{Vector{Int}}([1,2]))
5-element BitArray{1}:
 false
  true
  true
 false
 false

Оба будут работать под юлией 0.6.3 и 0.7.

Аналогично, оператор (\in TAB , синоним функции in) позволяет осуществлять вещание с использованием инфиксной записи.

julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
 false
  true
  true
 false
 false
...