Несколько человек уже упоминали, что вы можете использовать CompoundExpression
:
f[x_] := (y=x+5; y^2)
Однако, если вы используете ту же самую переменную x
в выражении, что и в аргументе,
f[x_] := (x=x+5; x^2)
тогда вы получите ошибки при оценке функции с помощью числа.Это связано с тем, что :=
по существу определяет замену переменных шаблона из lhs, то есть f[1]
оценивается как (неправильное) (1 = 1+5; 1^2)
.
Итак, как сказал Шурд,используйте Module
(или Block
иногда, но , в этом есть предостережения !) для локализации переменной функции:
f[x_] := Module[{y}, y=x+5; y^2]
Наконец, если вам нужна функция, которая изменила ееаргументы, затем вы можете установить атрибут HoldAll
:
Clear[addFive]
SetAttributes[addFive, HoldAll]
addFive[x_] := (x=x+5)
Затем использовать его как
a = 3;
addFive[a]
a