Julia可以向内部匿名函数传递参数吗?



我试图以一种特殊的方式将参数传递给map()中的匿名函数(参见代码示例)。

Julia中的以下代码…

function f(x,y):map((z)->z+y,x) end
print(f([1,2,3],1))

的回报:

MethodError: objects of type Symbol are not callable
Stacktrace:
[1] f(x::Vector{Int64}, y::Int64)
@ Main .REPL[1]:1
[2] top-level scope
@ REPL[5]:1

相同的代码翻译成Python…

def f(x,y):
return map(lambda z:z+y,x)
print(list(f([1,2,3],1)))

按预期工作:[2, 3, 4].

与Python相比,为什么相同的代码块在Julia中表现不佳,解决方法是什么?

这只是一个语法问题:Julia函数声明在函数体之前不使用冒号。

julia> function f(x,y) map((z)->z+y,x) end
f (generic function with 2 methods)
julia> print(f([1,2,3],1))
[2, 3, 4]

或者更容易读的

julia> function f(x, y)
map(z -> z .+ y, x)
end
f (generic function with 2 methods)
julia> print(f([1,2,3],1))
[2, 3, 4]

最新更新