簡體   English   中英

Julia 可以將參數傳遞給內部匿名函數嗎?

[英]Can Julia pass an argument to an inner anonymous function?

我正在嘗試以特定方式將參數傳遞給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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM