기능

함수는 특정한 작업을 완수하는 재사용 가능한 코드의 블록입니다. 해당 작업이 필요할 때 스크립트에서 함수를 사용할 수 있습니다. 덕분에 필요할 때마다 스크립트에 해당 작업에 대한 코드를 추가하기 위해 시간과 노력을 들일 필요가 없습니다. 또한 스크립트에서 코드의 양을 줄여서 스크립트를 더 깨끗하게 유지하고 깔끔하게 정리할 수 있습니다.

함수는 다음을 수행할 수 있습니다.

  • 스크립트에서 데이터를 가져와서 조작한 다음 결과를 스크립트로 다시 돌려보냅니다.
  • 작업 또는 일련의 작업을 수행하고 결과로 도출되는 데이터를 스크립트로 전달합니다.

일부 함수 중에는 스크립트 내에서 사용하기 위해 Studio내장되어 있기도 합니다. 스크립트에 아무 것도 추가하지 않아도 내장 함수를 사용할 수 있습니다. 사용하고 싶은 경우에는 호출하면 됩니다.

또한 스니펫에서 사용할 사용자 정의 함수를 생성할 수 있습니다. 스크립트에서 자주 사용해야 하는 코드가 있을 때 유용합니다. 필요할 때마다 스크립트에 추가하는 대신, 코드를 포함한 함수를 생성할 수 있습니다. 코드가 필요할 때는 함수를 호출하면 됩니다.

함수 사용의 예시를 다운로드하고 Studio에 가져올 수 있습니다.

구문

함수 이름은 functionName()처럼 마지막에 열림 및 닫힘 괄호 세트를 붙여야 합니다.

매개 변수 안에 있는 모든 텍스트는 매개 변수입니다. 매개 변수는 함수와 스크립트 사이로 전달되는 데이터를 정의합니다. 예를 들면 functionName(param1,param2)과 같습니다.

사용자 지정 함수를 생성하려면 이 구문을 사용하십시오.

FUNCTION <name><([parameter], [...])> <{ ... [RETURN [data]]}>

다음 구문에서

  • FUNCTION은(는) 모든 사용자 지정 함수 문을 시작하는 필수 키워드입니다.
  • <name>은(는) 함수의 이름입니다.
  • ([<parameter>] [...])은(는) 함수에 필요한 모든 매개 변수를 정의합니다.
  • { ... }에는 함수의 코드가 포함됩니다.
  • [RETURN <data>]은(는) 함수의 데이터를 주요 스크립트로 전달하기 위해 포함하는 문입니다.

다음 가이드라인을 따르면 사용자 지정 함수에 아무 이름이나 붙일 수 있습니다.

  • 영숫자 문자(a-z, A-Z, 0-9)를 사용합니다.

  • 이름의 첫 문자는 글자여야 합니다.
  • 밑줄 문자(_)와 달러 기호($)를 이름의 아무 곳에나 사용합니다.
  • 예약된 단어나 내장된 함수 이름은 사용하지 마십시오.

RETURN 문의 구분은 다음과 같습니다.

RETURN 또는 RETURN <var>

함수를 호출할 때는 다음 구문 중 하나를 사용합니다.

<functionName><([parameter], [parameter], [...])>

<{<varName>.<functionName><([parameter], [parameter], [...])>}>

매개 변수 및 인수

많은 함수는 스크립트에서 데이터를 사용해야 합니다. 매개 변수와 인수를 사용하면 이를 수행할 수 있습니다.

매개 변수는 함수가 생성될 때 정의됩니다. 매개 변수는 함수의 이름을 따르는 괄호 안에 표시되는 함수 이름입니다. 함수에는 두 개 이상의 매개 변수가 있을 수 있습니다. 각 매개 변수는 쉼표로 구분됩니다. 원하면 공백을 포함할 수 있지만 필수는 아니입니다. 예를 들면 logn(value, base) 함수에는 매개변수가 두 개 있는데, valuebase입니다.

스크립트가 매개 변수를 통해 함수로 전달되는 특정 데이터는 인수라 합니다. 다음 예시에서는 스크립트에 내장된 함수 abs(value)을(를) 사용하는 방법을 보여줍니다. 이 예시에서 -42value 매개 변수로 전달되는 인수입니다.

ASSIGN abVal = abs(-42)

Studio에서는 모든 매개 변수가 필수입니다. 함수가 매개 변수로 정의되면 함수를 호출할 때 값을 전달해야 합니다. 함수로 전달되는 인수의 개수는 정의된 매개 변수의 수와 일치해야 합니다.

스크립트는 인수가 적절한 유형 또는 형식인지 확인하지 않습니다. 하지만, 인수가 함수에서 예상하는 유형 또는 형식이 아닌 경우에는 함수가 성공적으로 완료되지 않거나 결과가 부정확할 수 있습니다.

너무 많은 인수 또는 너무 적은 인수가 함수로 전달되면 스크립트를 실행할 때 컴파일 오류가 발생합니다. 내장 함수사용자 지정 함수에 대해 발생할 수 있습니다.

인수 형식 지정

매개 변수를 필요로 하는 함수를 호출할 때는 함수로 전달하는 인수를 포함해야 합니다. 함수의 형식을 지정할 때는 다음 가이드라인을 따르십시오.

  • 인수가 숫자 또는 변수인 경우에는 작은따옴표 또는 큰따옴표로 묶을 필요가 없습니다.
  • 인수가 변수인 경우에는 중괄호로 묶을 필요가 없습니다.
  • 인수가 영숫자인데 변수가 아닌 경우에는 작은따옴표 또는 큰따옴표로 묶습니다.

예를 들어 dateadd() 함수에는 세 가지 매개 변수인 unit, date, value이(가) 필요합니다.

Unit 은(는) 년, 월 등 함수가 변경하기를 원하는 날짜의 부분을 정의합니다. Date 은(는) 수정하려는 원래 날짜입니다. 또한 value 은(는) 함수가 원래 날짜의 지정된 단위를 늘리기를 원하는 정도입니다. 다음 예시에서는 각 부분의 형식이 지정되는 방식을 확인할 수 있습니다.

ASSIGN NewDateYearNumeric = dateadd('year', MyDateTime, 1)

unit 은(는) 영숫자 문자열이므로 작은따옴표로 형식을 지정합니다. 이 예시의 date 은(는) 변수이므로 따옴표가 없습니다 문자열 날짜를 전달한 경우에는 따옴표가 필요합니다. value 은(는) 숫자이므로 형식이 지정되지 않습니다.

RETURN 문

RETURN 문은 함수를 종료하고 컨트롤을 스크립트로 다시 전달합니다. 또한 데이터를 스크립트로 전달할 수도 있습니다.

RETURN 문은 변수 값 또는 배열로서만 데이터를 스크립트에 전달할 수 있습니다. 이러한 값이 배열 또는 매개 변수의 일부인 경우를 제외하면 여러 값을 전달할 수 없습니다. 매개 변수가 JSON으로 변환되는 경우를 제외하면 개체를 전달할 수 없습니다. 필요하면 스크립트에서 함수를 다시 변환할 수 있습니다.

RETURN 문의 구분은 다음과 같습니다.

RETURN 또는 RETURN <var>

변수를 스크립트로 반환하는 모든 내장 함수에는 RETURN 문이 포함됩니다. 생성하는 사용자 지정 함수에서 RETURN 문은 선택 사항입니다. RETURN 문이 아닌 경우, 함수는 어떠한 값도 스크립트로 다시 돌려보낼 수 없습니다. RETURN 문이 없는 함수를 사용할 수 있는 유일한 방법은 함수를 문처럼 호출하는 것뿐입니다.

함수에 RETURN 문을 포함하면 함수의 마지막 줄이어야 합니다.

변수 가시성

기본 행동은 함수 내의 모든 값을 함수 내에서만 사용하는 것입니다. 함수가 종료되면 함수의 모든 값이 손실됩니다. 함수에 변수를 스크립트로 다시 전달하는 RETURN 문이 있는 경우에는 RETURN 문을 통해 전달되는 값만을 함수 외부에서 사용할 수 있습니다.

주요 스크립트에 존재하는 사용자 지정 함수에 변수를 포함하는 경우, 이러한 함수에는 글로벌 범위가 있습니다. 즉, RETURN 문을 사용하지 않아도 함수 외부에서 이러한 값을 사용할 수 있다는 의미입니다. 이와 마찬가지로, 함수 내의 변수를 글로벌로 선언하면 그 값을 주요 스크립트에서 사용할 수 있습니다. 이는 하위 스크립트에서 보이는 행동과 유사합니다.

표현식 내에서 함수를 사용하거나 변수의 값으로 사용하는 경우에는 기본 행동을 따릅니다. 하지만, 함수를 문으로 호출하는 경우에는 함수 내의 모든 값에 글로벌 범위가 있으며 함수 외부에서 사용할 수 있습니다. RETURN이(가) 없는 함수의 경우, 이는 유일하게 사용할 수 있는 방법입니다.

사용자 지정 함수 생성

스크립트 내의 여러 위치에서 사용할 수 있는 코드가 있으면 사용자 지정 함수를 생성할 수 있습니다. 사용자 정의는 생성하는 스크립트 내에서만 사용할 수 있습니다. 다른 스크립트에서 사용자 지정 함수를 사용하려면 스크립트에 함수 정의 코드를 복사해야 합니다.

스크립트 내에 하나의 Snippet 작업을 생성한 다음, 동일한 스크립트의 다른 Snippet 작업에서 이를 호출할 수 있습니다. 함수 정의를 포함한 스니펫을 디버그하면 이는 디버그에 포함됩니다. 하지만, 다른 스니펫을 디버그하면 함수가 포함되지 않습니다.

사용자 지정 함수를 선언하기 위한 구문은 다음과 같습니다.

FUNCTION <name><([parameter], [...])> <{ ... [RETURN [data]]}>

FUNCTION은(는) 다음에 오는 것이 사용자 함수라는 점을 스크립트에 알려주는 키워드입니다 함수 이름은 스크립트 내의 다른 엔터티처럼 동일한 명명 가이드라인을 따라야 합니다.

  • 영숫자 문자(a-z, A-Z, 0-9)를 사용합니다.

  • 이름의 첫 문자는 글자여야 합니다.
  • 밑줄 문자(_)와 달러 기호($)를 이름의 아무 곳에나 사용합니다.
  • 예약된 단어나 내장된 함수 이름은 사용하지 마십시오.

함수에 매개 변수가 필요한 경우에는 함수 이름 마지막의 괄호 사이에 매개 변수를 기재합니다. 아무 매개 변수도 없는 경우 매개 변수는 비워두어도 됩니다. 여러 항목 간은 쉼표로 구분됩니다.

함수를 구성하는 코드는 중괄호 사이에 기재합니다. 중괄호의 배치는 유연합니다. FUNCTION 키워드 및 이름과 같은 줄에 기재하거나 별도 줄에 기재할 수 있습니다. 예를 들어 다음 항목은 두 가지 모두 유효한 함수 정의입니다.

FUNCTION myFunction() { ASSIGN var = "value" } 
FUNCTION myFunction() 
{ 
	ASSIGN var = "value"
}

함수에 RETURN 문이 포함된 경우에는 닫힘 중괄호 앞에 기재하는 함수의 마지막 문이어야 합니다.

 

함수는 문자열이나 따옴표를 사용하지 않지만, 따옴표가 없으며 숫자 또는 부울이 아닌 경우에는 변수로 간주합니다

선언문 페이지에서 함수 생성에 관해 자세히 알아볼 수 있습니다.

사용자 정의 함수에 대한 자동 완성 도움말

사용자 정의 함수를 위해 자동 완성 도움말을 추가할 수 있습니다. Snippet Editor 창에서 함수의 이름 입력을 시작할 때 팝업으로 표시되는 툴팁 텍스트입니다. 점 표기법이 있는 함수를 호출할 때만 이 도움말이 표시됩니다.

이러한 툴팁을 사용하여 함수에 관한 유용한 정보를 제공할 수 있습니다. 예를 들면 함수의 매개 변수를 정의하는 데 사용할 수 있습니다.

자동 완성 도움말을 추가하려면 함수 선언과 같은 줄에 메모를 추가합니다. 예를 들어 다음 이미지에서 표시되는 툴팁을 생성하려면 함수 선언은 다음과 같은 형태입니다.

FUNCTION MyAppend(a,b) // My function to append the text
{
   RETURN "{a}{b}"
}	

함수에 자동 완성 도움말을 추가하면 함수 코드가 포함된 중괄호는 함수 정의와 별도의 줄에 배치되어야 합니다. 이 스크립트는 두 개의 정방향 슬래시(//) 기호 뒤에 기재되는 모든 텍스트를 메모의 일부로 간주합니다. 중괄호가 같은 줄에 있으면 스크립트는 이를 메모에 포함합니다.

스크립트 내의 호출 함수

스크립트 내에 함수를 사용할 때는 이를 호출해야 합니다. 함수를 호출하는 방법으로는 세 가지가 있습니다. 일부 옵션은 일부 함수에서 작동하지 않습니다. 특정 함수에서 사용 가능한 옵션은 함수가 값을 반환하는지 여부에 따라 달라집니다. 함수는 다음과 같은 방법으로 호출할 수 있습니다.

  • 문처럼 단독으로 호출합니다. 이 옵션은 모든 함수에 작동합니다.
  • 변수 또는 표현식을 사용할 위치에 호출합니다. 이 옵션은 값을 반환하는 함수에만 사용할 수 있습니다.
  • 점 표기법을 사용하는 함수에 사용합니다. 이 옵션은 값을 반환하는 함수에만 사용할 수 있습니다.

함수를 문으로서 호출

문은 스크립트에게 수행할 작업을 알려주는 명령어 키워드가 있는 코드 줄입니다. 함수를 문으로 사용할 수 있습니다. 함수를 문으로 사용하는 경우에는 스니펫 내의 다른 문과 마찬가지로 특별한 명령 키워드가 필요 없습니다. 함수 내의 코드는 스크립트에게 할 일을 알려줍니다.

어떤 함수든 문으로 사용할 수 있습니다. 함수에 RETURN 문이 포함되지 않은 경우에 이는 해당 함수를 호출하는 유일한 방법입니다. RETURN 문이 함수의 데이터를 스크립트로 다시 전달하기 때문입니다. RETURN이(가) 없는 경우, 스크립트가 함수 내의 데이터에 액세스하는 유일한 방법은 이를 문으로서 호출하는 것입니다.

함수를 문으로 호출하는 구문은 다음과 같습니다.

<functionName><([parameter], [parameter], [...])>

다음 예시에서는 append() 함수가 문처럼 호출되는 경우를 확인할 수 있습니다.

IF TEST = 1
{
  ASSIGN originalString = "My name"
  ASSIGN originalString2 = "Whose pajamas are these? "
  ASSIGN appendWithEscape = $"They're the cat's pajamas."			
}
originalString.append(" is Inigo Montoya.")
originalString2.append(AppendWithEscape)

변수 대신 함수 사용

함수가 값을 반환할 때는 이를 변수 또는 표현식으로 사용하는 것처럼 어디에서나 사용할 수 있습니다. 스크립트는 변수의 값 또는 표현식의 결과를 사용하는 것처럼 이 함수가 반환하는 값을 사용할 수 있습니다.

변수 대신 함수를 사용하기 위한 구문은 다음과 같습니다.

<functionName><([parameter], [parameter], [...])>

<{<varName>.<functionName><([parameter], [parameter], [...])>}>

함수의 결과를 변수에 할당되게 하려면 함수를 ASSIGN 문의 일부로 호출할 수 있습니다. 예를 들면 ASSIGN var = otherVar.function()입니다. 하지만, 한 케이스에서는 이를 수행할 수가 없으며, 이는 GetRESTproxy() 함수의 멤버 함수를 호출할 때입니다.

다음 예시에서는 값을 반환하는 함수를 사용하는 방법을 보여줍니다. 이는 예시 함수입니다.

FUNCTION replaceCharacters(string)
{
	ASSIGN adjustedString = string.replace("&", "and")
	RETURN adjustedString
}			

이 함수는 앰퍼샌드 문자(&)를 and 단어로 대체합니다. 다음 예시에서 replaceCharacters() 함수는 stringRes 변수의 문자열 값에 있는 변수 대신 사용됩니다. 이 코드가 실행될 때 stringRes의 값은My favorite animals are dogs and cats.(으)로 업데이트됩니다.

ASSIGN testString = "dogs & cats"
ASSIGN stringRes = "My favorite animals are {replaceCharacters(testString)}."

점 표기법을 함수에 사용하기

함수가 값을 반환하는 경우, 점 표기법을 사용하여 함수를 변수와 함께 사용할 수 있습니다. 그러면 variable.function()처럼 함수가 변수에 붙습니다. 이러한 방식으로 함수를 호출하면 변수의 값이 함수로 전달됩니다.  이 옵션은 값을 반환하는 함수에만 사용할 수 있습니다.

점 표시법을 함수에 사용하기 위한 구문은 다음과 같습니다.

<{<varName>.<functionName><([parameter], [parameter], [...])>}>

다음 예시에서는 이러한 방식을 보여줍니다. 함수는 다음과 같습니다.

FUNCTION MyAppend(a,b)
{
   RETURN "{a}{b}"
}	

MyAppend 함수를 ph 변수에 사용하는 FOR 루프는 다음과 같습니다.

FOR i=1 TO 9
{
   ph = "{ph.MyAppend(i)}"
}

FOR 루프의 결과는 ph="123456789"입니다.

점 표기법을 사용하여 함수를 호출할 때, 붙은 변수의 값이 첫 매개 변수의 인수로서 함수로 전달됩니다. 앞의 예시에서 ph의 초기 값은 a 매개 변수에 대한 인수로서 MyAppend() 함수로 전달됩니다. 이 때문에 함수 정의에 매개 변수가 두 개 있어도 함수 호출에는 인수가 하나만 있습니다. i의 초기 값은 b 매개 변수에 대한 인수로서 함수로 전달됩니다.

점 표기법이 있는 함수 호출의 장점은 함수에 대한 툴팁 도움말을 추가할 수 있다는 점입니다.