Error rendering WebPanel: No renderer found for resource type: velocity Template contents: <meta name="ajs-keyboardshortcut-hash" content="$keyboardShortcutManager.shortcutsHash">

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

  • 코틀린에서는 함수에서 추출한 함수를 원 함수 내부에 중첩시킬 수 있다. 이를 로컬 함수라 한다.
  • 아래 코드는 반복되는 검증 코드를 로컬 함수로 분리하는 예시다.

    코드 블럭
    languagejava
    themeEclipse
    titlebefore
    linenumberstrue
    fun saveUser(user: User) {
        if (user.name.isEmpty()) {
            throw IllegalArgumentException("Can't save user ${user.id}: empty name")
        }
         
        if (user.address.isEmpty()) {
            throw IllegalArgumentException("Can't save user ${user.id}: empty address")
        }
         
        // db에 저장
    }
    코드 블럭
    languagejava
    themeEclipse
    titleafter
    linenumberstrue
    fun saveUser(user: User) {
        fun validate(value: String, fieldName: String) {
            if (value.isEmpty()) {
                throw IllegalArgumentException("Can't save user ${user.id}: empty $fieldName")
            }
        }
         
        validate(user.name, "name")
        validate(user.address, "address")
     
        // db에 저장
    }
  • 컴파일될 땐 중첩된 내부 클래스가 static으로 선언된다

    코드 블럭
    languagejava
    themeEclipse
    linenumberstrue
    fun out() {
        fun inner() {
            println("inner")
        }
    
        inner()
    }
    코드 블럭
    languagejava
    themeEclipse
    title컴파일
    linenumberstrue
    public final class Test {
       public final void out() {
          out$inner();
          out$inner();
       }
    
       private static final void out$inner() {
          String var0 = "inner";
          boolean var1 = false;
          System.out.println(var0);
       }
    }