2-3 Expression Language

Using Expression Language

playground.restaurant에서 사용된 Expression Language에 대해 알아보도록 하겠습니다. 설명을 따라가면서 위 코드의 비워져 있는 value와 template 부분을 채워보세요.

slot1의 value에는 음식점의 이름을, slot2의 value에는 음식점의 주소를 그리고 image-url의 template 부분에는 이미지의 주소를 넣어서 캡슐을 완성해보세요.

위의 Restaurant 구조체에는 음식점의 이름인 name, 주소인 location 그리고 이미지의 주소인 url이 담겨져 있습니다.

지금부터 Developer Center의 예제를 통해서 정답을 찾아보도록 하겠습니다!

Bixby의 Expression Language(EL)는 사용자가 캡슐의 concept, action, layout 그리고 dialog를 만들 수 있도록 도와주는 기능을 수행합니다.

Expression Language를 사용하는 방법은 아래와 같습니다. (layout 이외에 concept, action 그리고 dialog 파일 등에서도 Expression Language를 사용하실 수 있습니다.)

layout {  
    mode (Summary)  
    match: Recipe (this)  
    
    content {    
        section {      
            title {        
                template ("#{value(this.name)}")      
            }      
            content {        
                if (exists(this.totalTime)) {          
                    single-line {            
                        text {              
                            value ("Total Time: #{value(this.totalTime)} minutes")            
                        }          
                    }        
                }        
                if (exists(recipe.servings)) {          
                    single-line {            
                        text {              
                            value ("Servings: #{value(servings)}")            
                        }          
                    }        
                }      
            }    
        }  
    }
}
  • 위 코드를 살펴보면 match는 Recipe의 값을 (this) 변수에 바인딩하고 있습니다.

  • this 슬롯은 . operator를 사용하여 접근이 가능합니다. (ex) this.name

  • exists(this.totalTime)함수는 this.totalTime에 값이 있는지 확인하는 데 사용됩니다. 만약 match 패턴이 Recipe(this)가 아니라 Recipe (r)이였다면, exists(r.totalTime) 를 사용해야 합니다.

  • Expression Language는 #{} 표현으로 사용될 수 있습니다. 따라서, #{value(this.totalTime)} 는 this.totalTime의 값을 반환하는 표현으로 사용됩니다.

page퀘스트2. Bixby로 주변 맛집 찾기

Last updated