본문 바로가기
Allegro Skill Language

[Allegro skill] 코드 묶기(expression grouping) 및 지역 변수

by 지식 퓨저니스트 2024. 5. 12.

포스팅 목차

    Allegro Skill 에서는 코드를 묶는 방법이 2가지 있다.

    첫번째로 괄호를 통한 코드 grouping이 있고, 두번쨰로는 let 함수를 통한 grouping 이 있다.

    또한 이 2가지 방법을 통한 Group에서는 변수들이 지역 변수로 적용되게 된다. 

    아래 예시를 통해서 간단히 설명하고자 한다.

     

    '{}' 대괄호를 통한 Code grouping

    아래 코드에서는 distance 라는 변수에 값을 '{}' 내에서 지역 변수들을 계산하고 있다.

    대괄호를 통해서 Code gouping을 하면서 가장 크게 바뀌는 부분은 내부 변수들이 지역 변수로 변경된다는 점이다.

    아래 Printf 값 #1,#2,#3 에서 보면 변수 a1,a2,b1,b2 값들이 대괄호 내에서는 지역 변수로 print되고,

    대괄호 밖에서는 Global 변수로 print 되는 것을 알 수 있다.

    이는 다른 말로 지역 변수로 선언된 부분은 대괄호 안에서만 지속된다는 것을 알 수 있다.  

     

    a1 = 2
    a2 = 3
    b1 = 4
    b2 = 5
    
    printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #1 global 변수 Print 
    #a1=2, a2=3, b1=4, b2=5  
    
    distance = {
    			a1=100
                a2=200
                b1=300
                b2=400
                dela = a1 - a2
                delb = b1 = b2
                sprt( dela**2 + delb**2)
                printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #2 지역 변수 Print
                # a1=100, a2=200, b1=300, b2=400
                }
    
    printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #3 global 변수 print, 지역 변수에 영향을 받지 않음
    #a1=2, a2=3, b1=4, b2=5

     

    let 함수를 통한 Grouping

    let 도 대괄호를 통한 grouping 과 동일하다. 다만 다른 부분이 있다면 let 함수 선언과 동시에 지역 변수들을 선언해주어야한다.

    아래는 a1,b2,b1,b2,dela, delb를 지역 변수로 선언했으며, 해당 변수들은 let 함수 안에서만 값이 유효하다. 

    let 함수 이후 부터는 global 변수로 print 되는 것을 알 수 있다. 

    a1 = 2
    a2 = 3
    b1 = 4
    b2 = 5
    
    printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #1 global 변수 Print
    #a1=2, a2=3, b1=4, b2=5  
    
    let((a1 a2 b1 b2 dela delb) #지역변수 선언
    			a1 = 100
                a2 = 200
                b1 = 300
                b2 = 400
    			dela = a1 - a2
                delb = b1 = b2
                sprt( dela**2 + delb**2)
                printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #2 지역 변수 Print
                #a1=2, a2=3, b1=4, b2=5  
    )
    
    printf("a1=%d, a2=%d, b1=%d, b2=%d" a1 a2 b1 b2) #3 global 변수 print, 지역 변수에 영향을 받지 않음
    #a1=2, a2=3, b1=4, b2=5

     

    마치며..

    Skill language를 필요한 부분만 검색해서 사용하다보니,

    '{}' 를 이용한 Code grouping 하는 부분은 놓치기 쉬운 부분인 것 같다.

    평소에는 let 함수를 통해서 함수를 만들기만해서 니즈가 크게 없었던 부분이긴하지만,

    반복되지 않는 간단한 값 처리는 대괄호를 통해서 grouping 하는 것도 좋을 것 같다.