데키스크립트 함수( Dekiscript function) 에 인수를 전달하는 방법은 2가지가 있습니다. 각각의 용법이 있으므로 데키스크립트의 세계에 뛰어들 때 2방식 다 익숙해지는 것이 좋습니다. 이 페이지는 이 참조 페이지( this reference page) 의 학습서 스타일의 확장판입니다.
이 페이지에서는 For this page, we'll use the wiki.tree() 함수를 일 예로써 사용할 것이고 "변수"(parameter)와 "인수"(argument)를 자유롭게 혼용하여 사용할 것입니다. Wiki.Tree() 는 다음 변수를 지정합니다:
함수 변수 리스트는 실제로는 하나의 맵(map) 이고 이는 key/값 의 여러 개의 쌍으로 이루어져 있습니다. 각각의 변수는 맵에 있는 입력정보이고 여기에서 key는 변수 이름과 동일하며 값은 제공하는 것과 동일합니다. 그러므로 변수를 전달하는 첫 번째 방법은 함수에게 변수 맵을 직접적으로 전달하는 것입니다.
맵은 중괄호 안에 이름:값 들이 쉼표로 분리되어 있는 리스트로 이루어진다. 이 접근 방식의 좋은 점은 아무런 순서로도 원하는 변수만을 지정할 필요가 있고 신경 쓸 필요가 없는 기타 변수는 누락할 수 있다는 점이다.
기본 정렬 순서를 사용하여 사이트의 전체 지도를 만든다고 가정 해 봅시다. 다음과 같이 할 수 있습니다:
{{ wiki.Tree{ path:"" } }}
단지 "path"(경로) 변수만을 지정하였고 그 값을 "" 로 설정하였으며, 이는 위키의 뿌리(root)에서 시작을 하게 될 것입니다. 선택사항인 "depth" 과 "reverse" 변수들은 기본값으로 남겨졌습니다.
리스팅의 순서를 뒤집고 싶다고 가정합시다:
{{ wiki.Tree{ reverse:true, path:"" } }}
맵을 사용하기 때문에 중간 인수를 뛰어넘을 수 있으며 그것에 대한 걱정을 하지 않아도 됩니다. 재미삼아서 이 에제에서는 인수들의 순서를 뒤집었고 문제가 되지 않습니다!
데키스크립트는 또한 arg-list 로써 변수를 전달할 수 있는 편리한 약칭 옵션을 제공합니다 , 그러면 자동으로 이를 맵으로 전환합니다. 이와 같은 경우, 일반 괄호 "()" 안에 리스트를 포함시키고 문서에 나열되어 있는 순서대로 원하는 값의 리스트를 제공하기만 하면 됩니다. 위의 예제를 다시 생성해 봅시다.
첫 번 째 예제의 새 버전입니다:
{{ wiki.Tree( "" ) }}
arg-list 를 사용할 때는 리스트의 끝에 있는 선택사항 인수를 언제든지 누락할 수 있습니다. 그렇다면 이전처럼 선택사항인 "depth" 와 "reverse" 변수는 기본값으로 남겨졌습니다.
그렇다면 2번째 예제는 어떻게 바뀌었을까요?
{{ wiki.Tree( "", nil, true ) }}
이 번에는 조금 더 흥미로워 보입니다. 맵과는 다르게 인수들을 올바른 순서대로 지정해야만 합니다. 나아가서, 2번째 인수를 그냥 넘어갈 수는 없었습니다, 만약 그렇지 않았다면 데키스크립트는 마지막 인수가 실제로 "reverse"변수였는지 알 방법이 없게 됩니다. 그러므로 우리는 두 번째 인수를 nil 로 채울 필요가 있고 이는 기능적으로 인수를 아예 설정하지 않지만 리스트에 자리를 차지하게 하는 것과 동일합니다. nil 대신에 동의어로써 사용될 수 있는 밑줄 (_) 혹은 null 을 사용할 수도 있습니다
물론 개인적 선호도에 달려있습니다. 맵 구문이 조금 더 풍부한 편입니다. 인수 순서를 기억할 필요가 없으며 가장 마지막 선택사항 변수만을 설정하기를 원할 때 일부러 nil 문자열들을 입력할 필요가 없습니다. 그렇다면 읽기도 힘들고 오류를 범하기 쉬울 것입니다. 하지만 다른 편으로 보자면, arg-list 구문이 좀 더 조밀하며 적은 수의 인수만으로 함수호출을 하기에 좀 더 편리합니다.
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |
Copyright © 2011 MindTouch, Inc. Powered by