2009-09-12 1 views
0

내가 user.r 이러한 별칭을 정의 f를 REBOL를 시작할 때REBOL 스크립트 오류 : 별칭 단어가 이미 사용 중입니다 : 그것은 사실이 아니다 반면

alias 'powershell "pw" 
alias 'explorer "o" 
alias 'open-program-files "pf" 
alias 'cmd "dos" 
alias 'edituser "eu" 
alias 'run-firefox "fx" 
alias 'run-firefox "f" 

그것은

** Script Error: Alias word is already in use: f 
** Near: alias 'run-firefox "f" 

이 표시 사실이 아니므로 입력 소스 f를 입력하면 정의되지 않음 :

>> source f 
f: undefined 
>> 

왜이 메시지인가?

답변

1

슬프게도 REBOL의 ALIAS은 심각한 취약점이 있습니다. 최소한 R2 : 은 전 세계적으로 만 작동합니다.

프로세스가 이미 단어를 사용한 경우 ALIASING에 사용할 수 없습니다.

이제 사용자가 정의하지 않았습니다. 당신은 당신이 새로운 콘솔을 시작할 때 이미 정의 된 전체 작품을 선택하면, 당신은 그들의 수천이 있습니다보고 놀랄 수 있습니다 :

print length? first system/words 

그리고 (R2 버전은 그냥 그것을 시도 이상으로), 즉 f를 단어 을 포함 F

find first system/words 'f 

비록 에는 전류 값이 없으며이되었다는 사실만으로 이전은 ALIAS으로 사용 중지 이용한다.

ALIAS은 사용상의 제한 사항 (및 기타)으로 인해 R3에서 강력한 제거 후보입니다.

+0

안녕하세요 고맙습니다. 흥미 롭습니다. R3에서 제거한 경우 Rebol이 일반적으로 "Admin Development Model"에 적합하므로 PowerShell 별칭에 비해 누락 된 기능이므로 나중에 더 강력한 버전으로 다시 돌아갈 수 있기를 바랍니다 http://blogs.msdn.com/ powershell/archive/2007/01/01/the-admin-development-model-and-send-snippet.aspx –

+0

ALIAS의 미래에 대한 자세한 내용은 여기를 참조하십시오 : http://www.rebol.net/r3blogs/ 0242.html R3에서 더 나은 상태로 살아남을 수있는 기회가 아직 남아 있습니다. – Sunanda

+0

"나는 버그 리포트를 생성 할만큼 앨리어스만을 사용하는 사람들 중 하나입니다.": D 다른 별난 버그가있는 것 같습니다 : 별칭을 호출하는 함수를 생성하는 스크립트를로드 할 때 . 항상 체계적으로 발생하는지 확신 할 수 없으면 다시 확인해야합니다. –

0

Rebol 사전으로 : 별칭과 다른 값을 같은 값으로 설정하면 혼동하지 않도록주의하십시오.

alias은 Rebol의 또 다른 간과 된 기능입니다. 방금 (기능 포함) 기존의 글로벌 값을 참조 할 수있는 새로운 이름을 추가해야하는 경우, 당신은 단지 alias없이 직접 수행 할 수 있습니다

pw: :powershell 
o: :explorer 
pf: :open-program-files 
dos: :cmd 
eu: :edituser 
fx: :run-firefox 
f: :run-firefox 

alias이 원본과 동일하게 동작합니다 새 심볼을 만들 수 있습니다 하나. 우리는 spelling 동등한 기호에 대해 여기에서 말하고 있습니다. meaning 등가 (결국 참조 된 값)가 아닙니다. 앨리어싱에 가장 유용한 사용법 중 하나는 원래 단어의 드롭 인 대체 단어로 사용할 수있는 단어의 번역입니다. 예를 들어 : 별명 그것을을 변경하지 않고 동일한 코드 의해 처리 될 수 있도록

>> alias 'monday "lundi" 
== lundi 
>> 'monday = 'lundi 
== true 
>> find [friday monday sunday] 'monday 
== [monday sunday] 
>> find [friday monday sunday] 'lundi 
== [monday sunday] 

만약 앨리어싱 단어를 이용하여 볼 수 있듯이, 동일한 단어에 대한 상이한 철자를 만들 수있다.

앨리어싱 된 단어는 일부 방언에 대한 단축키 단어를 만드는데도 유용 할 수 있습니다. 그러나 지금까지는이 기능을 사용하는 Rebol의 방언을 모릅니다.

추 신 : lundimonday의 프랑스어 단어입니다.