[Dart] Getter와 Setter의 기본.

8091 단어 Darttech

[Dart] Getter와 Setter


  • 배경.
  • 클래스 변수를 사유로 설정할 때 안전하게 참고하고 변경할 수 있도록
  • ※ 사유변수는 [インスタンス名].[変数名]처럼 직접 처리할 수 없음

  • [참조] 공식 사이트 Language tour
  • Language tour | Dart > Getters and setters
  • Getter만(읽기만 가능)

  • Getter를 이용하여 몬스터류의 사유 변수만 참조할 수 있음
  • class Monster {
      int _number;
      String _name;
      Monster(this._number, this._name);
    
      // Getter
      int get number => _number;
      String get name => _name;
    }
    
    void main() {
      final monster = Monster(1, 'Slime');
      print(monster.number.toString() + ':' + monster.name);
    }
    
    실행 결과
    1:Slime
    
  • [비고] 방문 개인 변수
  • 같은 파일에 기재되면 사유 변수로 작용하지 않지만, 파일을 분리import 'monster.dart';하여 그렇게 사용할 때 다음과 같은 오류가 발생한다.
  • monster._number = 0; 오류 메시지
  • The setter '_number' isn't defined for the type 'Monster'.
  • monster._number.toString() 오류 메시지
  • The getter '_number' isn't defined for the type 'Monster'.
  • Setter 추가

  • Setter를 이용하여 몬스터류의 사유 변수를 변경할 수 있음_name
  • 이때 값 검사 가능
  • class Monster {
      int _number;
      String _name;
      Monster(this._number, this._name);
    
      // Getter
      int get number => _number;
      String get name => _name;
    
      // Setter
      set name(String s) {
        if (s.length > 0 && s.length < 11) {
          _name = s;
        } else {
          print('$s:文字数を1文字以上10文字以下にしてください。');
        }
      }
    }
    
    void main() {
      final monster = Monster(1, 'Slime');
      print(monster.number.toString() + ':' + monster.name);
      monster.name = 'Slaline';
      print(monster.number.toString() + ':' + monster.name);
    }
    
    실행 결과
    1:Slime
    1:Slaline
    

    좋은 웹페이지 즐겨찾기