2013-04-02 3 views
4

난 당신이유형 선언

some-func: function [ 
    "some func" 
    number [ integer! ] 
    ] [ 
    result [ integer! ] 
    ] [ 
    help number 
    return number 
    ] 

    some-func 1 
    some-func "blah" 

    NUMBER is an integer of value: 1 
    ** Script error: some-func does not allow string! for its number argument 

방법에 대한 개체 속성하지만 기능에 대한 인수 및 반환을 선언 입력 할 수 있습니다 알고 개체를?

o: make object! [ 
    a [string!] 
    b [integer!] 
    c [o2] 
    none 
] 

o2: make object! [ 
    c [string!] 
] 

an-object: make o [ 
    a: 3.141 
    b: "an integer" 
    c: "blah" 
] 

help an-object 

N-OBJECT is an object of value: 
a    decimal! 3.141 
b    string! "an integer" 
c    string! "blah" 

속성에 대한 유형 선언이 예제로 사용되었지만 설명서 용일까요?

답변

1

단지 설명서 일뿐입니다. 유형 검사는 기능에서만 수행됩니다.

6

이것은 정말 좋은 질문이며, 내가 수년 동안 생각한 것입니다. Rebol의 내부 객체 저장 메커니즘이이를 처리 할 수 ​​있지만 소스 코드로 표현할 수는 없습니다. 왜 물어 보지? 이유는 다음과 같습니다.

Rebol은 현재 이름 - 값 쌍 개념을 가지고 있습니다. 그것이 컨텍스트와 객체가 표현되는 방법입니다. 그러나 객체가 이름이나 값이 아닌 다른 정보를 포함하는 것이 종종 바람직합니다. 데이터 유형은 좋은 예입니다. 다른 예는 값에 첨부 된 주석과 값에 대한 보호/사용 권한 (예 : 읽기 및 쓰기 허용)입니다.

문제는 다음과 같습니다. 언어 구문에서 지원하는 다양한 기능은 몇 개입니까? 구체적으로 어떻게할까요? 이러한 기능의 "선택적"특성으로 인해 더 복잡해집니다. 그래서, 당신은 실제로 위치 기술을 사용하여 객체를 기술 할 수 없습니다. 즉, Rebol이 구두점을 피하려고 시도하기 때문에 키워드를 추가하는 구문 방식을 추가하는 것입니다.

결과적으로 원본 양식은 매우 자세하게 표시 될 것이므로 가치가 있는지 여부를 질문 할 수 있다고 생각합니다. 처음부터 기능을 허용함으로써 얻을 수있는 이점.

Rebol의 간단한 원리가 피처 크리프보다 우선하는 경우입니다.

모두 간단한 방법에 대한 아이디어가 있다면 알려 주시기 바랍니다.