匿名函数Julia-x的值

时间:2019-06-15 11:24:32

标签: julia jupyter

我不知道x是从哪里初始化的,因为接下来要在比较中使用它。

我尝试显示xa的值。

我有此代码:

a = x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
println(a)

x之前未初始化-此代码是什么? 来自normal distribution的x随机数是均值0吗?

2 个答案:

答案 0 :(得分:3)

这是您所引用的代码的简化版本:

θ = zeros(1000) # or some other vector
ε = randn()
sum(x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)), θ)

现在x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))定义了一个匿名函数,该函数接受一个参数x,如果-1小于x则返回,如果1它大于ε,否则返回0

然后Julia中sum函数的方法之一接受两个参数,一个函数和一个集合。它的工作方式是将匿名函数x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))应用于θ的每个元素,并计算返回值的总和。

编辑

您也可以定义此代码,例如

sum(ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)) for x in θ)

答案 1 :(得分:0)

Julia中的函数是一类对象:可以将它们分配给变量,并使用已分配给变量的标准函数调用语法对其进行调用。它们可以用作参数,也可以作为值返回。也可以使用以下两种语法之一匿名创建它们,而无需给出名称:

在下面考虑一个简单的功能

 function MyPlus(x,y)
       x + y
 end

该函数的匿名版本是

a = (x,y) -> x + y

所以我们拥有的是

符号a表示包含函数的变量a。具体来说,它包含匿名功能

符号x代表DUMMY VARIABLE,它用于构造匿名函数。在匿名函数定义之外没有任何值

符号y代表DUMMY VARIABLE,它用于构造匿名函数。在匿名函数定义之外没有任何值

由于x和y都是DUMMY VARIABLES,因此它们不需要初始化,并且在匿名函数的定义之外不包含任何值。实际上,它们甚至不存在于匿名函数定义之外。

x和y没什么特别的,您可以使用任何符号,包括

mama = (baby,toy) -> baby + toy