REBOL

2009-12-16 2 views
2

에서 정제와 Func을 '객체에서 얻을 내가이REBOL

do get in o 'f "hello" 

처럼 호출 할 수의 내가

o: context [ 

    f: func[message /refine message2][ 
    print [message] 
    if refine [print message 2] 
    ] 

] 

있다고 가정 해 봅시다하지만 정제를 위해 할 수있는 방법?

>> do get in o 'f/refine "hello" "world" 
** Script Error: in expected word argument of type: any-word 
** Near: do get in o 'f/refine 
>> 

답변

2

직접 함수 값을 호출에 정제를 사용하는 인터프리터를 알 수있는 방법이 있는지 모르겠다을 수정. 인수가 function! 일 때 do의 매개 변수화가 필요합니다. 존재하지 않는 것 같지는 않지만 어딘가에 숨겨져있을 수도 있습니다.

상세 검색을 사용하는 유일한 방법은 경로입니다. 그 두 번째 문은 작성이 후 평가 무엇

>> fword: get in o 'f 
>> do compose [(to-path [fword refine]) "hello" "world"] 
hello 
world 

: 당신은 실제로 너무 경로로 함수 값을 넣을 수 있습니다

do [fword/refine "hello" "world"] 

분명히, 내가 먼저 임시 단어를 사용합니다 확인하십시오. 중개인의 필요성을 제거합니다.

>> do compose [(to-path compose [(get in o 'f) refine]) "hello" "world"] 
hello 
world 

P.S. 당신은 그냥 message2

-1

가 단순 경로를 사용하여 작업 할 것 같은 뭔가 O/F/

+0

여기 내 새 함수 내에서 http://reboltutorial.com/blog/creating-a-class-based-oop-language-adding-class-constructors-support/ 상세 검색을 사용하여 생성자를 호출하고 싶습니다. 그것은 모든 객체에 적용되어야하므로 변수로 호출해야합니다. 생성자를 자동으로 호출하려고합니다. –

1

이 수행해야 message 이상, 2 사이에 여분의 공간이 : 그들은 필드 또는 일련의 선택 객체에 해당하는 경우 평가 경로 식에

o/('f)/refine "hello" "world" 

괄호를/색인을 찌를 참조. 즉,이에 위의 코드에 해당한다 :

apply get in o 'f ["hello" true "world"] 

apply 인수 위치, 그래서 당신은 인수에 선언 된 순서를 알 필요가 기능 자체를 개선하여 당신은 너무, 그 트릭을 할 수 없습니다 것을. apply을 사용하거나 함수 호출의 상세 검색을 매개 변수화하려는 경우 평가할 경로 표현식을 작성해야합니다.