2014-04-04 39 views

Odpowiedz

23

Korzystanie przykład Nanashi, tym trop jest błąd podczas wywoływania f(g())

julia> g() = (1, 2, 3) 
g (generic function with 1 method) 

julia> f(a, b, c) = +(a, b, c) 
f (generic function with 1 method) 

julia> g() 
(1,2,3) 

julia> f(g()) 
ERROR: no method f((Int64,Int64,Int64)) 

Oznacza to, że daje to krotki (1, 2, 3) jako wejście do f bez rozpakowywania. Aby go rozpakować użyj elipsy.

julia> f(g()...) 
6 

Odpowiedni rozdział w podręczniku Julia jest tutaj: http://julia.readthedocs.org/en/latest/manual/functions/#varargs-functions

+0

nie wiedziała krotki mogą być splatted, dzięki! – AJcodez

+1

Wolę 'f (g() ...)' nad 'apply', i myślę, że pierwszy jest bardziej idiomatyczny w Julii. –

+0

@AJcodez: Czy mogę usunąć moją odpowiedź jako akceptowaną i zamiast tego oznaczyć ją jako odpowiedź? Uważam, że i tak jest lepiej. – Manhattan

4

Zastosowanie apply.

julia> g() = (1,2,3) 
g (generic function with 1 method) 

julia> f(a,b,c) = +(a,b,c) 
f (generic function with 1 method) 

julia> apply(f,g()) 
6 

Daj nam znać, jeśli to pomoże.

Powiązane problemy