0
上位言語の言語であるmapをどのようにして作成できますか?それは引数としてブロックと関数を取り、送られた関数をブロックの各メンバに適用する必要があります。私は次のコードを試してみた:赤い言語でマップ関数を作成する
Red []
mapfn: function[blk sfn][
outblk: copy []
foreach i blk[
append outblk (sfn i) ]
outblk ]
; to test:
myblk: [" this " " is " " a " " line " "for" " testing " " only "]
probe mapfn myblk 'reverse
probe mapfn myblk 'trim
しかし、それは動作していません - 元のブロックを変更したりエラーメッセージを返すだけで元のブロックに戻します。どのようにこれを修正することができますか?あなたはメザニン機能がソースがを適用するを参照してください
>> help apply
USAGE:
APPLY func block /only
DESCRIPTION:
Apply a function to a reduced block of arguments.
APPLY is a function value.
ARGUMENTS:
func -- Function value to apply (Type: any-function)
block -- Block of args, reduced first (unless /only) (Type: block)
REFINEMENTS:
/only -- Use arg values as-is, do not reduce the block
(SPECIAL ATTRIBUTES)
throw
を適用していREBOLので
なぜトリムも見せている反転した文字列を変更したくない場合、この関数は、この方法を呼び出しますか? – rnso
私は答えを変えました。 **逆**と**トリム**元のシリーズで動作し、それを変更します。したがって、あなたが作業しているシリーズのコピーを使用する必要があります。 – sqlab