동적 데이터 개체

하나의 값 내에서 여러 값을 보유할 수 있는 데이터 구조의 개체입니다. 스크립트의 '항목'과 모두 관련이 있는 값 모음이 있으면 유용합니다. 예를 들면 이름, 전화번호, 이메일 주소 등 컨택과 관련된 데이터 세트가 있을 수 있습니다.  개체 안에 이러한 값을 모두 저장할 수 있습니다. 스크립트에서 사용되는 변수 개수를 줄일 수 있다는 장점이 있습니다.

Studio은(는) DynamicData 유형의 개체를 지원합니다. 이러한 유형은 XML 또는 JSON처럼 정적인 형식이나 유형이 없는 데이터와 사용할 수 있습니다.

스니펫에서 동적 데이터 개체를 선언하거나 JSON 또는 XML 구문 분석을 통해 동적 데이터 개체를 만들 수 있습니다. 또한 API 호출과 특정한 프레임워크 작업에서도 생성됩니다.

표준 변수를 사용할 수 있는 모든 Studio 작업에서 동적 데이터 개체를 사용할 수 있습니다. 동적 데이터 개체는 표준 변수처럼 데이터를 보유하는 데 사용할 수 있습니다. 또한 다른 용도도 있습니다. 예를 들면 다음을 수행하기 위해 사용할 수 있습니다.

  • REST API 호출 생성.
  • Workflowdata작업의 응답을 처리합니다. 이 작업은 동적 데이터 개체에서 워크플로 데이터를 반환합니다.

동적 데이터 변수 및 개체의 수는 추적에 영향을 줄 수 있습니다. 많은 수의 동적 변수를 포함하는 스크립트에는 성능 이슈가 발생할 수 있습니다. 더 많은 데이터가 포함되어 있을수록 각 작업을 처리하는 데 더 많은 시간이 걸립니다.

동적 데이터 개체에 관한 주요 정보

  • 동적 데이터 개체가 보유한 값은 멤버라고 합니다.
  • 각 멤버는 이름으로 식별됩니다. 예를 들어 beowulfCharacteristics.occupation에서 beowulf 은(는) 개체이고 occupation은(는) 멤버 중 하나의 이름입니다.
  • 개체의 멤버 유형은 런타임에 결정됩니다. 컴파일러는 속성에 관한 정보를 저장합니다. 런타임에 이 정보는 검사 및 수행됩니다. 이 때문에 컴파일러는 동적 데이터 개체 관련 오류를 감지하지 않습니다. 대신, 오류는 런타임 예외를 유발합니다.
  • 동적 데이터 개체는 동적으로 생성되는 멤버를 가질 수 있습니다. 스크립트 내에 동적 데이터 개체를 선언한 후에는 이후 줄 개체의 멤버에 값을 할당합니다. 다른 스니펫의 멤버에게도 값을 할당할 수 있습니다. 멤버가 존재하지 않으면 자동으로 생성되며 지정된 값이 할당됩니다.
  • 동적 데이터 개체는 여러 유형의 데이터를 저장할 수 있습니다. 표준 스니펫 변수는 암시적 유형이기에 Studio 컴파일러가 코드를 컴파일할 때 유형이 결정됨을 의미합니다.  동적 데이터 개체는 DynamicData 유형입니다. 개체의 멤버는 암시적 유형입니다.
  • 동적 데이터 개체의 멤버를 참조할 때는 대소문자를 구분합니다. 예를 들어 beowulfCharacteristics.files.file을(를) ASSIGN fileContent = "{beowulfcharacteristics.Files.file}"으(로) 구문 분석하려고 시도하면 아무것도 반환되지 않습니다. 동적 개체 멤버 Files.file은(는) files.file과(와) 다르기 때문입니다.
  • 동적 데이터 개체의 모든 멤버에는 특수한 속성인 $value이(가) 있습니다. 이 속성에는 값을 할당할 수 없습니다. 이를 통해 다른 방식으로는 작동하지 않는 멤버로 특정한 작업을 수행할 수 있습니다.
  • 동적 데이터 개체와 그 멤버의 크기는 32KB 미만이어야 합니다. 개체를 JSON 또는 XML로 변환할 때 그 결과인 콘텐츠의 크기는 32KB 미만이어야 합니다. 변환된 개체의 콘텐츠가 크기 한도를 초과하면 콘텐츠가 잘립니다.

시도해 보기

개체 예시 스크립트를 다운로드하여 Studio가져오기합니다. 이 도움말 페이지의 많은 예시는 예시 스크립트의 Snippet 작업에서 사용할 수 있습니다. Snippet Editor 창을 열고 디버거를 실행하여 각 예시가 작동하는 방식을 확인할 수 있습니다.

개체 멤버

동적 데이터 개체는 멤버라고도 하는 속성을 키/값 쌍의 형태로 보유합니다. 키는 멤버의 이름이며, 개체 내의 변수 이름과 유사합니다. 다음 예시에서 키는 name, occupation, foe입니다. 각 키에는 연결된 값이 있으며, 이 값은 등호 기호 오른쪽에 큰따옴표로 묶어서 배치합니다.

DYNAMIC beowulfCharacteristics
beowulfCharacteristics.name = "Beowulf"
beowulfCharacteristics.occupation= "Hero" 
beowulfCharacteristics.foe = "Grendel" 

동적 데이터 개체를 사용하면 스크립트에서 사용하는 변수의 수를 줄일 수 있습니다. 앞의 예시에서는 세 개의 고유한 변수를 생성하는 대신 하나의 개체를 사용하여 세 개의 값을 보유하는 방법을 확인할 수 있습니다.

동적 데이터 개체의 멤버는 자체적인 멤버 세트를 가질 수 있습니다. 하위 멤버는 첫 번째 레벨 멤버와 동일한 규칙을 따릅니다. 예:

DYNAMIC beowulfFoes
beowulfFoes.foe1.name = "Grendel"
beowulfFoes.foe1.type = "monster"
beowulfFoes.foe1.status = "defeated"
beowulfFoes.foe2.name = "Grendel's mother"
beowulfFoes.foe2.type = "monster"
beowulfFoes.foe2.status = "defeated" 

동적 데이터 개체 구문 요약

이 섹션에서는 Studio 스크립트에서 동적 데이터 개체 사용과 관련 있는 구문을 요약합니다. 내용은 이 페이지의 다른 섹션에서 자세히 알아볼 수 있습니다.

이 구문을 사용하여 동적 데이터 개체를 선언합니다.

DYNAMIC <objectName> [FROM 'string' | var]

<objectName>은(는) Studio의 표준 변수로서 동일한 명명 가이드라인을 따라야 합니다. 개체 이름은 대소문자를 구별합니다.

FROM 절은 선택 사항입니다. JSON 또는 XML 문자열을 포함한 문자열 'string'의 콘텐츠 또는 스크립트 변수var에서 개체를 생성하는 데 사용할 수 있습니다. 'string'을(를) 사용하는 경우에는 한 줄에만 배치하고 작은따옴표로 묶어야 합니다.

이 구문을 사용하여 개체에 멤버를 추가합니다.

<objectName>.<memberName> = "value".

멤버 이름은 대소문자를 구별합니다. 키워드를 사용하거나 개체에 멤버를 추가할 필요는 없지만 원하면 ASSIGN을(를) 사용할 수 있습니다.

다음 구문을 사용하여 동적 데이터 개체에 배열을 생성합니다.

DYNAMIC <object>

ASSIGN <object>.<member>[<index>].<sub-member>= "value"

동적 데이터 개체 선언

동적 데이터 변수를 선언하려면 코드에서 DYNAMIC 키워드를 변수 이름 전에 사용한 다음 여기에 속성을 추가합니다. 예:

DYNAMIC beowulfCharacteristics
ASSIGN beowulfCharacteristics.name = "Beowulf"
ASSIGN beowulfCharacteristics.occupation= "Hero" 
ASSIGN beowulfCharacteristics.foe = "Grendel"

개체 멤버를 선언하는 데 키워드가 필요하지는 않습니다. 하지만, 원하면 ASSIGN을(를) 사용할 수 있습니다. 동적으로 멤버를 참조하면 멤버가 이미 존재하지 않는 경우 멤버가 생성됩니다.

동적 데이터 개체 멤버 참조하기

동적 데이터 개체에 포함된 값을 사용해야 할 때는 해당 값을 보유한 멤버를 참조해야 합니다. 다음 구문을 사용하십시오.

<dynamicObjectName>.<memberName>

표준 변수를 사용할 때와 동일한 방식으로 사용할 수 있습니다. 변수 대체를 수락하는 모든 Studio 작업에서는 물론, 스니펫에서도 동적 데이터 개체를 참조할 수 있습니다.

예를 들어 다음 개체의 이름 멤버를 참조하려면 beowulfCharacteristics.name을(를) 사용합니다.

DYNAMIC beowulfCharacteristics
beowulfCharacteristics.name = "Beowulf"
beowulfCharacteristics.occupation= "Hero" 
beowulfCharacteristics.foe = "Grendel" 

특수 개체 변수 $value

동적 데이터 개체에는 특수한 속성인 $value이(가) 있습니다.. 이 속성을 사용하면 다른 방식으로는 불가능한 방식으로 개체 및 값을 사용하여 작업을 수행할 수 있습니다. 다음에 사용할 수 있습니다.

  • 개체의 멤버에 함수를 사용합니다. 예: beowulfCharacteristics.name.first.$value.length(). 다음 섹션의 개체를 사용한 함수 실행에 관해 자세히 알아볼 수 있습니다.
  • $value 속성(x = name.first.$value)을 사용하여 동적 데이터 개체 속성에서 값을 정규 변수로 복사합니다.

값을 $value(으)로 할당할 수 있습니다. 읽기 전용입니다.

개체에 대한 함수

함수는 호출하여 스크립트 내에서 실행할 수 있는 코드의 블록입니다. 함수를 사용하면 변수 또는 개체 안의 값으로 상호작용할 수 있습니다. 함수는 값을 수정하거나 값에 관한 정보를 제공할 수 있습니다. 예를 들어, 변수의 케이스 또는 개체 멤버의 값을 변환할 수 있는 함수가 있습니다. 배열에서 요소의 개수를 세거나 값이 숫자인지 여부를 알려주는 다른 함수도 있습니다.

스크립트에서 동적 데이터 개체를 사용할 수 있는 여러 함수가 있습니다. 개체 멤버에만 함수를 실행할 수 있으며, 개체 자체에는 실행할 수 없습니다.

개체로 함수를 사용하려면 특수 개체 속성 $value을(를) 사용합니다. 이 속성은 읽기 전용이며, 개체에서 생성되는 $value 속성을 유발하지 않습니다. 함수의 이름이 개체의 속성이 되지 못하도록 막습니다. 사용하는 개체 멤버의 리터럴 문자열 값을 반환합니다.

다음 구문을 사용하여 개체 멤버에 함수를 실행합니다: obj.member.$value.function().

예를 들어 name.firstlength() 함수를 실행하려면 다음을 사용합니다:

ASSIGN length = name.first.$value.length().

개체 값을 다른 개체 또는 변수로 복사

데이터의 두 가지 버전을 원하는 경우 개체가 보유한 데이터의 사본을 생성할 수 있습니다. 이렇게 하면 다른 버전에 영향을 주지 않으면서 한 버전을 변경할 수 있습니다. 이를 수행하려면 다음 구문에 따라 내장된 copy() 함수를 사용합니다.

DYNAMIC <object1>

DYNAMIC <object2>

<object1> = copy(<object2>)

데이터를 복사하는 대상 변수는 동적 개체 또는 Studio 변수가 될 수 있습니다. 표준 변수인 경우에는 동적 개체로 자동 변환됩니다.

copy() 함수는 참조에 비해 더 많은 시스템 리소스를 사용합니다. 개체를 텍스트 표현으로 변환한 다음 다시 개체로 변환하여 전체 복사를 수행할 수 있습니다. 작업하는 개체에 많은 양의 데이터가 포함되어 있으면, 이 프로세스는 스크립트의 기능에 영향을 줄 수 있습니다.

동적 개체의 하위 멤버에서 값을 복사하여 다른 동적 개체의 하위 멤버로 복사할 수 있습니다. copy() 함수는 하위 멤버와 작동하지 않으므로 서로 일치하는 변수를 설정해야 합니다.

DYNAMIC currentContact
currentContact.who = beowulfCharacteristics.name

동적 개체의 하위 멤버에서 표준 변수로 값을 복사할 수 있습니다. 그러면 자동으로 변수가 동적 개체로 변환됩니다. 이 문제를 방지하려면 복사하는 동적 개체의 이름과 하위 멤버는 큰따옴표와 중괄호로 묶어야 합니다. 그러면 변수가 동적 개체로 변환되는 문제가 방지됩니다. 예:

ASSIGN currentContact = "{beowulfCharacteristics.foe}"

개체 이름의 형식을 지정하는 다른 방법은 $value 속성을 추가하는 것입니다.

ASSIGN currentContact = beowulfCharacteristics.foe.$value

개체 값을 다른 개체 또는 변수로 참조 할당

동적 데이터 개체 또는 다른 동적 개체에 참조를 할당할 수 있습니다. 예:

DYNAMIC beowulfCharacteristics
ASSIGN beowulfCharacteristics.name = "Beowulf"
ASSIGN beowulfCharacteristics.occupation= "Hero" 
ASSIGN beowulfCharacteristics.foe = "Grendel"

DYNAMIC currentContact

ASSIGN currentContact = beowulfCharacteristics

위의 할당 이후 currentContactbeowulfCharacterics은(는) 모두 동일한 물리적 데이터를 참조합니다. 동적 개체 중 하나에서 하위 멤버의 값을 변경하면 다른 개체의 값도 변경됩니다. 예를 들어 currentContact.name을(를) Beowulf Herot(으)로 변경하면 자동으로 beowulfCharacteristics.name의 값이 Beowulf Herot(으)로 업데이트됩니다. beowulfCharacteristics.name의 값을 Sparky(으)로 변경하면 currentContact.name의 값이 자동으로 Sparky로 업데이트됩니다.

참조를 개별 하위 멤버로 할당할 수 없습니다. 하위 멤버의 값을 한 동적 개체에서 다른 동적 개체로 복사할 수 있습니다. 그러면 값이 복제됩니다. 하나의 값을 변경하면 다른 값은 자동으로 변경되지 않습니다.

JSON 또는 XML에서 동적 데이터 개체 만들기

동적 데이터 개체를 JSON 또는 XML 구문 분석에 사용할 수 있습니다.

동적 데이터 개체를 정의하고 FROM 명령을 사용하여 다음 구문으로 JSON 또는 XML 데이터를 지정합니다.

DYNAMIC <objectName> [FROM 'string' | var]

JSON 또는 XML 데이터를 포함한 'string'을(를) 지정할 수 있습니다. 또한 JSON 문자열 또는 XML 데이터를 포함한 스크립트 변수 var의 이름도 지정할 수 있습니다. 'string'을(를) 사용하면 전체를 한 줄에 배치해야 합니다. 'string'이(가) 두 번째 줄로 넘어가면 오류가 발생합니다.

예:

DYNAMIC beowulfWeapons FROM '{ "key1": "Hrothgars gift", "key2": "Hrunting", "key3": "Naegling"}'

이 결과는 다음과 같습니다.

beowulfWeapons.key1 = "Hrothgars gift"  
beowulfWeapons.key2 = "Hrunting" 
beowulfWeapons.key3 = "Naegling"

앞의 예시에서 사용된 JSON 키-값 쌍이 이름이 famousSwords인 변수에 포함된 경우에는 대신 동적 데이터 개체를 다음과 같이 생성할 수 있습니다.

DYNAMIC epicMonsterDoom FROM famousSwords

결과는 개체 생성의 두 가지 방법에서 모두 동일합니다.

Studio에서는 JSON을 구문 분석할 때 __type이(가) 두 개의 밑줄 문자(_)와 함께 사용됩니다. 동적 데이터 변수는 JSON을 구문 분석할 수 있으므로 동적 데이터 변수의 키 이름으로는 사용할 수 없습니다. 이를 동적 데이터 변수의 키 이름으로 사용하면 스크립트를 저장할 때나 스크립트가 작업을 실행할 때 오류가 발생합니다.

변수에 JSON 문자열 할당하기

JSON 문자열로 작업할 때 또 다른 옵션은 동적 개체 대신 변수에 할당하는 것입니다. 이는 JSON 문자열 작업 시 선호되는 방법이 아닙니다. 동적 개체에 JSON을 넣는 것만큼 코드를 유연하게 관리하고 작업할 수 없기 때문입니다. 하지만 필요한 경우가 있을 수 있습니다.

JSON 문자열을 변수에 할당하려면 먼저 중괄호( { ) 및 큰따옴표( ") 문자를 이스케이프 문자로 바꿔야 합니다. 텍스트 편집기를 사용하여 문자를 수동으로 바꾸거나 스크립트에서 replace() 함수를 사용하여 이 작업을 수행할 수 있습니다. 변수 할당에서 다음 예시와 같이 JSON 문자열 앞에 달러 기호( $ )를 붙여야 합니다. 달러 기호는 이스케이프 문자가 포함된 값을 나타냅니다.

ASSIGN customPayloadFromBotJson = $"\{\"prompts\": [\{\"mediaSpecificObject\": \{\"dfoMessage\": \{\"messageContent\": \{\"type\": \"PLUGIN\", \"payload\": \{\"elements\": [\{\"id\": \"bf2521f4-5e85-413f-b6ed-815d1c3905f0\", \"type\": \"FILE\", \"filename\": \"photo.jpg\", \"url\": \"https://www.nice.com/-/media/niceincontact/layout/nice-logo-web-header/nice-web-logo.ashx\", \"mimeType\": \"image/jpeg\"}]}}}}}]}"
		

REST 응답에서 동적 데이터 개체 만들기

동적 데이터 개체는 REST API 호출의 응답에서 자동으로 만들어집니다. 이러한 응답은 JSON 또는 XML일 수 있습니다. Studio에서는 스크립트에서 이를 동적 데이터 개체로 변환합니다. 예:

ASSIGN GetRequest = "<API Endpoint>"
ASSIGN DynamicReturn = Proxy.MakeRestRequest(GetRequest,"",0,"GET")
ASSIGN fileContent = "{DynamicReturn.files.file}"

이 예시에서 MakeRestRequest() 함수는 동적 데이터 개체인 DynamicReturn을(를) 반환합니다. 이 변수와 DYNAMIC 키워드를 사용할 필요가 없습니다. 스크립트가 자동으로 이를 동적 데이터 개체로 만들기 때문입니다.

REST 응답을 포함한 동적 데이터 개체를 구문 분석하려면 ASSIGN fileContent = "{DynamicReturn.files.file}"을(를) 사용합니다. 이는 추출한 값({DynamicReturn.files.file})을 fileContent 변수에 할당합니다. ASSIGN fileContent = DynamicReturn.files.file.$value을(를) 사용하여 응답을 구문 분석할 수 있습니다.

REST API 호출에 대한 페이로드 데이터 준비

REST API 호출에 대한 페이로드 데이터를 준비하고, asjson() 함수를 사용하여 이를 JSON으로 전송할 수 있습니다. 이 작업에 대해 선호되는 방법은 REST API 작업을 사용하는 것입니다. 하지만, 스니펫에서도 이를 달성할 수 있습니다. 예:

DYNAMIC tokenInput
ASSIGN tokenInput.grant_type = "password"
ASSIGN tokenInput.username = "Grendel.Cainson"
ASSIGN tokenInput.password = "MadeUpPassword"
	<additional tokenInput properties> 
ASSIGN tokenJsonInput = "{tokenInput.asjson()}"
ASSIGN proxy = GETRESTProxy()
<ASSIGN additional variables as needed>
ASSIGN tokenResponse = proxy.MakeRestRequest(TokenRequestURL,TokenJsonInput, 0, "POST")

이 예시에서 TokenInput은(는) 세 가지 특성인 grant_type, username, password을(를) 사용한 동적 변수로 선언됩니다. TokenJsonInput은(는) asjson() 함수를 사용하여 TokenInput을(를) 보유하는 것으로 선언되었습니다. 예시의 마지막 줄에서 TokenResponse 변수는 요청을 전송하기 위해 스크립트 코드에서 사용될 수 있는 REST 요청을 보유하도록 선언되었습니다.

JSON 또는 XML로 동적 데이터 개체 변환하기

동적 개체의 내용을 JSON 또는 XML 문자열로 변환할 수 있습니다. 그러면 개체의 데이터가 직렬화되어 인터넷을 통해 전송할 수 있는 형식으로 변환됩니다.

이렇게 하려면 변환하려는 개체를 asjson() 또는 asxml() 함수에 사용하십시오. Studio에서는 이를 두 곳에서 수행할 수 있습니다. Snippet 작업 내에서나 개체에서 변환한 데이터가 필요한 작업 속성에서 수행할 수 있습니다.

두 가지 방법 모두 동일한 방식으로 수행합니다. 하지만 변환된 개체를 가지도록 Snippet에서 변수를 변환하면 변환이 진행되는 위치를 더욱 쉽게 볼 수 있다는 장점이 있습니다. 개체의 변환된 내용이 필요한 작업을 몰라도 됩니다.

Snippet에서 개체를 변환하려면 다음 구문을 사용하십시오.

ASSIGN varJSON="{myDynamic.asjson()}"

JSON 또는 XML 데이터가 필요한 Studio 작업의 속성에서, Snippet에서 사용한 변수 이름을 사용합니다. 구문 예시에서는 작업 속성을 varJSON(으)로 구성합니다.

작업 속성에서 개체를 변환하려면 개체의 이름과 asjson() 또는 asxml() 함수를 중괄호와 사용하여 작업 속성을 구성합니다. 예: {myDynamic.asjson()}.

동적 개체의 모든 멤버는 문자열 값으로 처리되며, 여기에는 숫자와 부울닫힘 참 및 거짓과 같은 두 가지의 가능한 값을 가진 데이터 유형. 값이 포함됩니다. 문자열이 아닌 값의 경우에는 수동으로 JSON을 구문 분석하여 큰따옴표를 삭제해야 합니다. 또한 replace() 함수도 사용할 수 있습니다.

동적 개체의 내용 보기

디버거를 실행할 때 Snippet 편집기 창에 있는 동적 개체의 내용을 볼 수 있습니다. 그러면 코드의 각 단계마다 보유해야 하는 데이터를 보유한 개체를 확인할 수 있습니다.

  1. Studio에서 Snippet 작업을 두 번 클릭합니다.
  2. 필요하면 스니펫 코드를 추가합니다.
  3. Debugger 탭에서 트리 형태 변수 탭을 클릭합니다.
  4. Debugger 탭에서 디버깅 시작 아이콘 옆의 아래쪽 화살표를 클릭한 다음 한 줄에서 그 아래줄로 향하는 화살표가 있는 일련의 평행선입니다. 단계 진행을 선택합니다. 코드를 줄별로 진행하고 싶지 않으면 디버깅 시작 아이콘을 선택합니다.
  5. Step 한 줄에서 그 아래줄로 향하는 화살표가 있는 일련의 평행선입니다. 아이콘을 클릭한 다음 Variables as Tree 탭의 내용을 봅니다. 단계를 클릭할 때마다 이 필드는 이전 코드 줄 이후에 스크립트 내에 있는 변수 및 개체로 업데이트됩니다. 디버깅 시작을 클릭한 경우에는 이 단계를 건너뛰십시오.
  6. 모든 코드 줄을 진행했거나 디버깅 시작을 클릭했다면 Variables as Tree 탭에서 모든 변수, 개체, 내용이 스니펫 마지막에 표시됩니다.
  7. 문자 배열이나 코드 내의 동적 개체 옆에 있는 + 아이콘을 클릭하여 확장할 수 있습니다. 내용이 다른 배열 또는 개체인 경우, 트리를 계속 확장하여 각 엔터티에 포함된 사항을 확인할 수 있습니다.

스크립트 유효성 검사 오류 및 동적 개체

스크립트를 저장하면 Studio이(가) 그 안에 있는 모든 정보의 유효성을 검사합니다. 확인하는 항목 중 하나는 스크립트에서 참조되는 모든 동적 개체가 스크립트에서 선언된다는 것입니다. Studio에는 유효성이 검사되는 스크립트에서 참조되는 모든 개체에 대한 개체 선언이 필요합니다. 개체가 다른 스크립트에서 선언되고 유효성이 검사되는 스크립트로 전달되어도 여전히 오류가 발생합니다. 스크립트에 선언하지 않은 개체가 있는 경우에는 저장할 때 "함수 '[name]'이(가) 정의되지 않았습니다." 오류가 발생합니다.

두 가지 방법으로 이 오류를 방지할 수 있습니다. 한 가지 옵션은 TEST 변수가 있는 IF 문을 개체를 참조하는 스니펫으로 추가하는 것입니다. IF 문의 중괄호에서 동적 개체를 선언합니다. 예:

IF TEST = 1
{
	DYNAMIC dynaObject
}
DYNAMIC dynaObject.prop = 1

두 번째 옵션은 개체 선언만 포함하고 그 외의 것은 아무것도 포함하지 않는 SNIPPET을(를) 스크립트에 추가하는 것입니다. 여러 개체가 스크립트로 전달되는 경우에는 이 모든 것을 단일 SNIPPET에 선언할 수 있습니다. 이는 스크립트 내의 다른 SNIPPET 작업을 깔끔하게 유지하는 데 도움이 됩니다. 스크립트의 다른 작업에 이 작업을 연결할 필요가 없습니다. 이 작업은 스크립트에 존재하는 것만으로 스크립트가 유효성 검사 중에 개체를 선언해야 할 필요를 충족합니다.