2 votes

Julia peut-elle passer un argument à une fonction anonyme interne ?

J'essaye de passer un argument à une fonction anonyme dans le fichier map() d'une manière particulière (voir les exemples de code).

Le code suivant dans Julia...

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

retours :

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

Le même code traduit en Python...

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

fonctionne comme prévu : [2, 3, 4] .

Pourquoi le même bloc de code se comporte-t-il mal dans Julia par rapport à Python et quelle est la solution ?

2voto

sundar Points 2271

C'est juste un problème de syntaxe : Les déclarations de fonctions Julia n'utilisent pas de deux-points avant le corps de la fonction.

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]

Ou plus lisiblement,

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]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X