我试图以一种特殊的方式将参数传递给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]