Eine Prozedur mit Schlüsselwortargumenten erstellen

Sag ich habe ein generischesProc, Lambda odermethod, für das optional ein zweites Argument angegeben wird:

pow = -> (base, exp: 2) { base**exp }

Nun möchte ich diese Funktion curry und ihr ein @ gebexp von3.

cube = pow.curry.call(exp: 3)

Hier gibt es eine Mehrdeutigkeit, die sich aus den Schlüsselwortargumenten und der neuen Hash-Syntax ergibt, in der Ruby @ interpretierexp: 3 als Hash wird als erstes Argument übergeben,base. Dies führt dazu, dass die Funktion sofort aufgerufen wird und ein @ ausgegeben wirNoMethodError wann#** wird an den Hash gesendet.

Das Setzen eines Standardwerts für das erste Argument führt ebenfalls dazu, dass die Funktion beim Aufrufen sofort aufgerufen wird, und wenn ich das erste Argument als erforderlich markiere, ohne einen Standardwert anzugeben:

pow = -> (base:, exp: 2) { base**exp }

der Dolmetscher wird sich beschweren, dass mir ein Argument fehltbase wenn ich versuche das @ zu curProc.

Wie kann ich eine Funktion mit dem zweiten Argument curry?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage