How do I take the current value of n
in the second line in order for the answers to be the same in both cases?
n = 2;
f[x_] := x/n;
Print[f[8]];
n = 4;
Print[f[8]];
Now:
4
2
Want:
4
4
Basically, I want the function to be x/2
after my definition. (Please don't suggest defining it as x/2
, I need to define a list of functions inside the cycle.)
UPDATE
The question I asked looks oversimplified, so suggested solutions do not really work for me. Here is a more realistic example.
I want to create a list of functions, each acting on a complicated argument:
ft = {};
For[n = 1, n <= 3, n++,
tmp[x_] := x[[1]]/n;
AppendTo[ft, tmp];
];
ft[[1]][{12, 1}]
ft[[2]][{12, 1}]
ft[[3]][{12, 1}]
The generated output is
3
3
3
The desired output is:
12
6
4
I cannot replace :=
with =
since this produces an error.
Set
instead ofSetDelayed
(so that it will immediately evaluatef[x]
to bex/2
), or else maken
part of the argument list tof
. $\endgroup$Set
in this case? $\endgroup$f[x_] = x/n;
(not:=
) $\endgroup$