이 같은 F에 대한 포인터로 페이지를 만들 수 있습니다rebol에 "동적"함수 포인터가있을 수 있습니까?
f: func[][print 1]
p: :f
하는 실행 :
>> p
1
하지만 p가 2 인쇄되지 않습니다
f: func[][print 1 print 2]
에 f를 수정하는 경우
p 지점을 "동적으로"f에 가져 오는 다른 방법이 있습니까?
이 같은 F에 대한 포인터로 페이지를 만들 수 있습니다rebol에 "동적"함수 포인터가있을 수 있습니까?
f: func[][print 1]
p: :f
하는 실행 :
>> p
1
하지만 p가 2 인쇄되지 않습니다
f: func[][print 1 print 2]
에 f를 수정하는 경우
p 지점을 "동적으로"f에 가져 오는 다른 방법이 있습니까?
새 인스턴스를 만들었으므로 수정하지 않았습니다. 두 번째 블록의 내용을 변경하여 f를 수정할 수 있습니다. 즉 ...
>> f: func[][print 1] >> p: :f >> p 1 >> append second :f [print 2] == [print 1 print 2] >> p 1 2
희망이 있습니다.
별칭을 사용할 수 있습니다.
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
]
별칭을 매우 좋아하지만 여러 번 자주 버그가 발생하는 경우가 많습니다. 문자열이 아니라면 별칭이있는 것처럼 가장합니다. –
희망 별칭은 rebol 3에서 더 잘 작동하지만 carl은 버그를 알고있는 바로 그 이유 때문에 그것을 삭제하려고했습니다. –
당신은 F를 수행합니다 : P 당신이 실제로 F하고있다 "점에"P의 값 (기능).
P : func [] []를 다시 수행하면 값인이 만들어지고 P 만 값이 할당됩니다.
간접있는 유일한 방법은 접근 경유, F 같은 것이 : 않는다 [P]
p는 값 F가 변경되지 않은 P의 결합 이후 새로운 함수를 호출 알 바뀌면 그 값만 (새로운 함수).
별명은 포인터가 아닌 단어 동등성이므로 경로의 단어로도 유효하며 실제 사용에서는 상당히 불쾌합니다.
아주 좋습니다. –
은 보안 문제로 인해 R3과 더 이상 사용할 수 없습니다. – moliad
R3에서 함수의 원래 본문에 액세스 할 수 있으면 함수를 수정할 수 있습니다. – Ladislav