Оценка в определении - PullRequest
0 голосов
/ 23 мая 2018

Я сожалею о названии, но не могу найти лучшего.

Давайте определим

function test(n)
    print("test executed")
    return n
end

f(n) = test(n)

Каждый раз, когда мы звоним f, мы получаем

f(5)

test executed

5

Есть ли способ заставить Джулию оценить test один раз в определении f?

Я ожидаю, что это, вероятно, будет невозможно, и в этом случае у меня немного другой вопрос.Если ar=[1,2,:x,-2,2*:x] есть ли способ определить f(x) как сумму ar, то есть f(x) = 3*x+1?

1 Ответ

0 голосов
/ 23 мая 2018

Если вы хотите компилировать на основе информации о типе, вы можете использовать @generated functions .Но похоже, что вы хотите компилировать на основе значений времени выполнения ввода.В этом случае вы можете захотеть сделать памятку.Существует библиотека Memoize , которая предоставляет макрос для функций запоминания.

...