我想在程序的不同部分多次调用类似rand((0, 1), N)
(之前分配了一些整数)的东西(我将来可能会将所有出现的情况更改为,例如,或)。如何创建一个变量,每当它被引用时,它都会评估这个函数?N
rand((-1, 1), N)
randn(N)
我不想只写这样rand_thing = rand((0, 1), N);
的东西,因为那时随机值每次都相同,这是不希望的。
当然,我可以在我想写的时候定义rand_func = rand((0, 1), N);
和调用. 我也可以做一些涉及到的事情,然后在我想写的时候打电话。但是,有没有办法我可以获得这个功能并且只写来生成我的随机数?rand_func()
rand((0, 1), N)
eval
rand_ex = :(rand((0, 1), N));
eval(rand_ex)
rand((0, 1), N)
rand_thing
这是一个具体的例子,它是一个更大的问题的一部分,即是否有东西可以直接完成Mathematica中SetDelayed
( ) 的功能。:=
如果我这样做rand_thing := RandomReal[];
而不是thing = RandomReal[];
在 Mathematica 中,那么每次我写rand_thing
我都会得到一个新的随机数。(在 Mathematica 中,我不会使用下划线作为变量名,但无论如何。)
如果我所描述的内容是不可能的,那么对于为什么SetDelayed
在 Mathematica 中可能但在 Julia 中没有类似的东西的一些见解将不胜感激。这是语言的根本区别吗?或者这是不同约定的问题?或者,也许 Julia 可以很容易地拥有一个延迟集合运算符,但到目前为止它还不是语言语法的一部分?(如果是这样,实现会是什么样子?)或者别的什么?