2017-10-28 3 views
0

Statt harten Kodierung (erfundenen Beispiel hier) zu erzeugen:Ist es möglich, Funktion dynamisch in Rebol oder rot

f1: func[][print "f1"] 
    f100: func[][print "f100"] 
    etc... 

Ist es möglich, so etwas wie dies

for num 1 100 1 [ 
     set to-word rejoin ["f" num] func[][ 
     print rejoin ["f" num] 
     ] 
    ] 

zu tun, außer es doesn‘ t Arbeit, es gibt immer "f100" (warum in der Tat num ist gleich 100 ist ein Geheimnis für mich, obwohl es nicht die Frage ist hier: Schließung?).

+0

Siehe auch den zugehörigen Rosetta Code-Eintrag: https://rosettacode.org/wiki/Closures/Value_capture#Red – DocKimbel

Antwort

1
for num 1 100 1 [ 
    set to-word rejoin ["f" num] func[] compose/deep [ 
    print rejoin ["f" (num)] 
    ] 
] 

>> f1 
f1 
>> f2 
f2 
>> f99 
f99 

Das Ergebnis Ihrer Funktionen ist immer F100, weil sie alle das gleiche Wort num mit dem Ergebnis Ihrer for-Schleife teilen. Sie können sehen, dass wenn Sie z.B. source f1.

+0

du bist ein Genie danke :) – user310291

Verwandte Themen