2014-04-04 2 views

Antwort

23

Mit Nanashi dem Beispiel ist der Hinweis der Fehler, wenn Sie 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)) 

nennen Dies zeigt an, dass dies das Tupel es (1, 2, 3) als Eingabe für f ohne Auspacken gibt. Zum Entpacken verwenden Sie eine Ellipse.

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

Der entsprechende Abschnitt im Handbuch Julia ist hier: http://julia.readthedocs.org/en/latest/manual/functions/#varargs-functions

+0

weiß nicht Tupeln splatted werden können, Dank! – AJcodez

+1

Ich bevorzuge 'f (g() ...)' über 'apply', und ich denke, das erste ist in Julia idiomatischer. –

+0

@AJcodez: Ist es möglich, meine Antwort als die akzeptierte zu entfernen und diese stattdessen als Antwort zu markieren? Ich glaube, das ist sowieso besser. – Manhattan

4

Verwenden 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 

Lassen Sie uns wissen, ob dies hilft.