Mathematica:将参数的默认值设置为非常量?

2024-01-02

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mathematica:将参数的默认值设置为非常量? 的相关文章

随机推荐