2010-11-28 10 views

답변

3

새 인스턴스를 만들었으므로 수정하지 않았습니다. 두 번째 블록의 내용을 변경하여 f를 수정할 수 있습니다. 즉 ...

 
>> f: func[][print 1] 
>> p: :f 
>> p 
1 
>> append second :f [print 2] 
== [print 1 print 2] 
>> p 
1 
2 

희망이 있습니다.

+0

아주 좋습니다. –

+0

은 보안 문제로 인해 R3과 더 이상 사용할 수 없습니다. – moliad

+0

R3에서 함수의 원래 본문에 액세스 할 수 있으면 함수를 수정할 수 있습니다. – Ladislav

1

별칭을 사용할 수 있습니다.

REBOL의 별칭은 기존 단어를 별칭으로 사용할 수 없기 때문에 약간 제한이 있습니다. 그러나 이것은 나를 위해 작동 :

f: does [print 1] ;; define 'f as you do 
alias 'f "px"  ;; create an alias as 'px 
px 
== 1     ;; same result as 'f 

f: context [a: 3] ;; change 'f to something completely different 
probe px    ;; 'px is the same as the new 'f 
    make object! [ 
     a: 3 
    ] 
+0

별칭을 매우 좋아하지만 여러 번 자주 버그가 발생하는 경우가 많습니다. 문자열이 아니라면 별칭이있는 것처럼 가장합니다. –

+0

희망 별칭은 rebol 3에서 더 잘 작동하지만 carl은 버그를 알고있는 바로 그 이유 때문에 그것을 삭제하려고했습니다. –

0

당신은 F를 수행합니다 : P 당신이 실제로 F하고있다 "점에"P의 (기능).

P : func [] []를 다시 수행하면 값인이 만들어지고 P 만 값이 할당됩니다.

간접있는 유일한 방법은 접근 경유, F 같은 것이 : 않는다 [P]

p는 F가 변경되지 않은 P의 결합 이후 새로운 함수를 호출 알 바뀌면 그 값만 (새로운 함수).

별명은 포인터가 아닌 단어 동등성이므로 경로의 단어로도 유효하며 실제 사용에서는 상당히 불쾌합니다.