Суммирование всех элементов одномерного массива в Юлии - PullRequest
1 голос
/ 27 сентября 2019

Это довольно простой вопрос, но я не смог найти вопрос, связанный с этой проблемой.Предположим, существует массив типа Array{Int64,1}, и я хочу суммировать все элементы в массиве.Синтаксис, который я нашел в Интернете, заключается в простом использовании функции sum в массиве, например:

sum([i for i in 1:999 if i%3==0 || i%5==0])

Однако я получил сообщение об ошибке

MethodError: objects of type Int64 are not callable

Сообщение также появляетсякогда я пытаюсь синтаксис в сообщениях stackoverflow с просьбой суммирования многомерного массива.Так в чем здесь проблема?

1 Ответ

6 голосов
/ 27 сентября 2019

У меня работает:

julia> sum([i for i in 1:999 if i%3==0 || i%5==0])
233168

Попробуйте перезапустить Джулию.Возможно, ранее вы использовали sum в качестве переменной, и теперь компилятор не распознает ее как функцию.

Кроме того, лучше избегать распределений.Нет необходимости создавать массив, просто используйте вместо него генератор:

julia> sum(i for i in 1:999 if i%3==0 || i%5==0)
233168

Последний для меня более чем в два раза быстрее, и нулевое распределение.

...