我可以将函数参数的默认值设置为某个值 那不是常数吗?示例:
tod := Mod[AbsoluteTime[], 86400]
f[x_:tod] := x
在上面,'tod'每次评估都会改变,但是“f []”会改变 不。 “?f”产量:
f[x_:42054.435657`11.376386798562935] := x
显示我创建函数时硬编码的默认值。
这里有解决方法吗?
答案 0 :(得分:7)
如果函数保存其参数似乎有效:
tod := Mod[AbsoluteTime[], 86400]
SetAttributes[f, HoldAll];
f[x_: tod] := x
在[23]中:= f []
出[23] = 47628.994048
在[24]中:= f []
Out [24] = 47629.048193
或者您可以使用类似以下的结构而不是默认值:
g[] := g[Mod[AbsoluteTime[], 86400]]
g[x_] := x
在[27]中:= g []
Out [27] = 47706.496195
在[28]中:= g []
Out [28] = 47707.842012
答案 1 :(得分:3)
我推荐这个:
f[] := f[Mod[AbsoluteTime[], 86400]]
f[x_] := x
或等效地说:
f[x_:Null] := With[{x0 = If[x===Null, Mod[AbsoluteTime[], 86400], x]},
x0]