我可以将函数参数的默认值设置为某个值吗
这不是恒定的?例子:
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