我可以将函数参数的默认值设置为某个值吗
这不是恒定的?例子:

tod := Mod[AbsoluteTime[], 86400]
f[x_:tod] := x

在上面,'tod' 每次我评估它都会改变,但是 "f[]"会
不是。 “?f”产生:
f[x_:42054.435657`11.376386798562935] := x

当我创建函数时,显示默认值是硬编码的。

这里有解决方法吗?

最佳答案

如果函数保持其参数,它似乎有效:

tod := Mod[AbsoluteTime[], 86400]
SetAttributes[f, HoldAll];
f[x_: tod] := x

在[23]:= f[]

出[23]= 47628.994048

在[24]:= f[]

出[24]= 47629.048193

或者,您可以使用如下所示的结构代替默认值:
g[] := g[Mod[AbsoluteTime[], 86400]]
g[x_] := x

在[27]:= g[]

出[27]= 47706.496195

在[28]:= g[]

出[28]= 47707.842012

10-08 05:16