Wie kann man eine partiell angewendete Funktion mit varargs definieren und aufrufen?

8

Stapelüberlauf:

Hallo alle.

Ich möchte eine teilweise angewandte Funktion definieren, die varargs hat.

Um dies zu bestätigen, bereitete ich mehrere Funktionen, d. h. Funktionen._ vor. Die Funktionen außer func haben ein varargs Argument.

Wie kann man eine partiell angewendete Funktion mit Varargs definieren und aufrufen? (z. B. gunc1 mit varargs.)

Java-Version "1.7.0_07" Scala Code Runner Version 2.9.1.final

%Vor%

[Bearbeiten nach Rex Kerrs Kommentar]

Ich möchte die teilweise angewandte Funktion wie guncN unten:

%Vor%

Aber es ist durch scalac verboten.

Ich denke, guncN sollte jedes Mal zum Zeitpunkt (2), (2, 3) und (2, 3, 4, 5, 100) ausgewertet werden. Wir brauchen keine Waffe unten:

%Vor%     
J Camphor 10.11.2012, 14:32
quelle

3 Antworten

6

Wenn Sie nur varargs wollen, können Sie in 2.9:

%Vor%

Aber nicht in 2.10, wie es jetzt steht, und es gibt keinen offensichtlichen Plan, dies zu ändern: Ссылка

%Vor%

Wenn Sie 2.9 haben, können Sie

%Vor%

Aber vielleicht sollten Sie nicht darauf zählen, varargs Funktionen zu haben, da dies scheinbar veraltet ist (oder zumindest hinter das -Yeta-expand-keeps-star -Flagging verschoben wurde, welches als -Y -Option möglicherweise nicht funktioniert oder jederzeit entfernt wird ).

    
Rex Kerr 10.11.2012 15:15
quelle
2

Die Lösung, die ich gefunden habe, besteht darin, Funktionen zu komponieren:

%Vor%     
pedrofurla 10.11.2012 15:06
quelle
0
  

vielleicht sollten Sie nicht darauf zählen, varargs-Funktionen zu haben, da dies scheinbar veraltet ist (oder zumindest hinter die -Yeta-expand-keeps-star -Flagge verschoben wurde)

SI-6816 bestätigt die Abwertung und in Scala 2.12.x, Dez. 2016, mit PR 5558 , diese Flagge ist endgültig verschwunden ( Diskussion hier ).

  

Ich möchte eine Teilfunktion, die wir nicht kennen args.size BEVORHAND

Das scheint immer noch nicht möglich (in Scala 2.12.x, Dez. 2016)

    
VonC 26.12.2016 07:39
quelle

Tags und Links