bar*_*ter 4 wolfram-mathematica default-value
我可以将函数参数的默认值设置为不恒定的值吗?例:
tod := Mod[AbsoluteTime[], 86400]
f[x_:tod] := x
Run Code Online (Sandbox Code Playgroud)
在上面,'tod'每次评估时都会改变,但"f []"不会."?f"收益率:
f[x_:42054.435657`11.376386798562935] := x
Run Code Online (Sandbox Code Playgroud)
当我创建函数时,显示默认值是硬编码的.
这里有解决方法吗?
如果函数保存其参数似乎有效:
tod := Mod[AbsoluteTime[], 86400]
SetAttributes[f, HoldAll];
f[x_: tod] := x
Run Code Online (Sandbox Code Playgroud)
在[23]:= f []
出[23] = 47628.994048
在[24]:= f []
出[24] = 47629.048193
或者您可以使用类似以下的结构而不是默认值:
g[] := g[Mod[AbsoluteTime[], 86400]]
g[x_] := x
Run Code Online (Sandbox Code Playgroud)
在[27]中:= g []
出[27] = 47706.496195
在[28]中:= g []
出[28] = 47707.842012