# 1. Ignorieren Sie das zweite Argument von Curry und hart Code der Zeilenumbruch
Versuchen Sie dies, das letzte Argument von cat
durch harte Codierung in einer anonymen Funktion Curries. Es ist tatsächlich keinen Gebrauch von Curry
Argumente nach dem ersten machen:
catnip <- Curry(function(...) cat(..., "\n"))
# 2. Funktion Herstellen durch eine anonyme Funktion
Hier currying ist eine zweite Lösung, die das letzte Argument von cat
reichlichen Maße durch eine anonyme Funktion, die cat
‚s Argumente neu ordnet.
catnip2 <- Curry(function(last.arg, ...) cat(..., last.arg), "\n")
# test
catnip2("hi", "there")
# 3. Gewünschte Funktion herstellen, indem man eine noch grundlegendere Funktion curry
Vielleicht ist der wirkliche Punkt von allem das zu sehen, wie wir grundlegende Bestandteile nehmen und sie cryry erhalten können, was wir wollen. So konnten wir eine allgemeine last.arg.fun
definieren und dann von einem Curry davon die gewünschte Funktion herstellen:
last.arg.fun <- function(FUN, last.arg, ...) FUN(..., last.arg)
catnip3 <- Curry(last.arg.fun, cat, "\n")
# test
last.arg.fun(cat, "\n", "hi", "there")
# test
catnip3("hi", "there")
Wir haben es in zwei Schritten tun könnten, wenn wir last.arg.cat
irgendwann benötigt:
last.arg.cat <- Curry(last.arg.fun, cat)
catnip4 <- Curry(last.arg.cat, "\n")
# test
last.arg.cat("\n", "hi", "there")
# test
catnip4("hi", "there")
Beachten Sie, dass Jeder der Tests sollte eine Zeile erzeugen, die besagt, dass dort eine neue Zeile endet.
EDIT: mehr Lösungen.
Curry Katze, yummmmy! – John
Schlaue Antworten alle. Meine Beherrschung von 'do.call' ist unvollständig, geht aber weiter. Vielen Dank :-) –