Ошибка при вызове макроса - PullRequest
0 голосов
/ 01 июня 2018

Моя задача - создать гармоническое среднее с помощью макросов.Поэтому я написал что-то вроде этого:

macro mean(arr)
    ex = Expr(:call, :/, 1, arr[1])
    for i = 2:length(arr)
         ex = Expr(:call, :+, ex, Expr(:call, :/, 1, arr[i]))
    end
    println(arr[1])
    Expr(:call, :/, length(arr), ex)
end

и затем выполнил с 4 аргументами

@mean(2,2,5,7)

, что вызвало ошибку:

MethodError: no method matching @mean(::Int64, ::Int64, ::Int64, ::Int64)

Итак, вот мой вопрос:что не так и как мне это исправить?Стоит отметить, что эта программа работает для моего друга, но не для меня.

1 Ответ

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

Проблема в том, что вы вставили значения в виде нескольких аргументов, а не в виде массива.Вы должны сделать @mean([2, 2, 5, 7])

...