Вы можете транслировать orrursin
следующим образом (добавьте .
после имени функции):
julia> x = "abc"
"abc"
julia> y = ["abc", "xyz"]
2-element Array{String,1}:
"abc"
"xyz"
julia> b = occursin.(x, y)
2-element BitArray{1}:
true
false
julia> findall(b)
1-element Array{Int64,1}:
1
julia> findfirst(b)
1
Обратите внимание, что, хотя String
может быть повторен по нему, трансляция рассматривается как скаляр.
Также стоит помнить, что occursin
возвращает значение Bool
, чтобы вы могли использовать его непосредственно в логических тестах, например, i || error("ENTITIES section not found")
в коде из вашего вопроса.
В порядкечтобы найти индекс в коллекции вхождений true
в возвращаемом значении передаваемых occursin
, используйте findall
или findfirst
функций (есть также findlast
).Разница в том, что findall
возвращает вектор записей, где в коллекции встречается true
, а findfirst
возвращает только первую такую запись.Также обратите внимание на разницу, когда вы передаете все falses
ему.findall
вернет пустой вектор и findfirst
вернет nothing
.
Если вы не хотите сохранять вектор b
в коде выше, вы можете получить индексы напрямую (это должнобыстрее) передавая предикат в качестве первого аргумента findall
/ findfirst
:
julia> findall(t -> occursin(x, t), y)
1-element Array{Int64,1}:
1
julia> findfirst(t -> occursin(x, t), y)
1