且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Mathematica:将参数的默认值设置为非恒定值吗?

更新时间:2023-10-14 23:49:16

如果函数保留其参数,这似乎可以工作:

It seems to work if the function holds its arguments:

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

In [23]:= f []

In[23]:= f[]

Out [23] = 47628.994048

Out[23]= 47628.994048

In [24]:= f []

In[24]:= f[]

Out [24] = 47629.048193

Out[24]= 47629.048193

或者您可以使用以下结构代替默认值:

Or you can use a construction like the following instead of a default value:

g[] := g[Mod[AbsoluteTime[], 86400]]
g[x_] := x

输入[27]:= g []

In[27]:= g[]

输出[27] = 47706.496195

Out[27]= 47706.496195

In [28]:= g []

In[28]:= g[]

Out [28] = 47707.842012

Out[28]= 47707.842012