Вот упрощенная версия кода, на который вы ссылаетесь:
θ = zeros(1000) # or some other vector
ε = randn()
sum(x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)), θ)
Теперь x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
определяет анонимную функцию, которая принимает один аргумент x
и возвращает -1
, если x
меньше -ε
, 1
, если оно больше ε
, а в противном случае возвращает 0
.
Тогда один из методов функции sum
в Julia принимает два аргумента: функцию и коллекцию. Он работает так, что применяет анонимную функцию x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
к каждому элементу θ
и вычисляет сумму возвращаемых значений.
EDIT
В качестве альтернативы вы можете определить этот код, например, в
sum(ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)) for x in θ)