<난장>
난장
<난장>
전체 방문자
59,468
오늘
68
어제
34
  • 난장 (145)
    • 난장 다이어리 (36)
      • Write (9)
    • 난장 Dev (17)
      • Flutter - Dart (11)
      • Mobile (0)
      • WEB (1)
      • Database (5)
    • 난장 핫플레이스 (46)
      • 국내 (31)
      • 국외 (14)
    • 난장 리뷰 (45)
      • 카페 리뷰 (30)
      • 맛집 리뷰 (2)
      • IT 리뷰 (1)
      • 문화 리뷰 (10)
      • ETC 리뷰 (2)
    • 난장 난(蘭) (1)
      • 난(蘭) 이야기 (0)
      • 꽃, 식물 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 모두 제가 찍은 사진입니다!
  • 2019년 2월 13일, 로고 사용합니다.
  • 2019년 1월 22일, 난장의 난(蘭) 이야기를 시작합니⋯

인기 글

  • Dart - 시작하기 - VSCode 설치
    2020.05.18
    Dart - 시작하기 - VSCode 설치
  • Dart - Dart 프로젝트 만들기(VSCode)
    2020.05.18
    Dart - Dart 프로젝트 만들기(VSCode)
  • 오라클 - count에서 case 문 사용하기
    2020.05.13
    오라클 - count에서 case 문 사용하기
  • 드론 원스탑 - 항공사진 촬영허가 신청 (비영리 개인)
    2021.02.06
    드론 원스탑 - 항공사진 촬영허가 신청 (비영리 개인)
  • Dart - 언어 시작하기 ( 구조, 변수)
    2020.05.18
    Dart - 언어 시작하기 ( 구조, 변수)

태그

  • tamron2875fe
  • a7ii
  • 카페
  • samyang14mm
  • Sony
  • a7m2
  • samyang
  • 커피
  • tamron2875
  • 14mm
  • 미러리스
  • 소니미러리스
  • A7M3
  • 여행
  • 소니
  • 화순
  • 전남
  • samyang14
  • 삼양
  • sonya7iii

최근 댓글

  • ㅋㅋㅋ 음 ㅋㅋㅋ 애매하죠.. ㅋㅋㅋ
    <난장>
  • 커피맛은 음..
    산내들
  • 글쎄요. 다음에 평일 시간내줘요. 같이 가요.
    <난장>
  • 사람이 어마어마하네요. 처음에는 여길 누가 찾아오나 했는데⋯
    소원맘
  • 수정했어요! 감사해요! :)
    <난장>

최근 글

  • 전남 보성 명교리 | 봄 | 2022.04.10.
    2022.07.14
    전남 보성 명교리 | 봄 | 2022.04.10.
  • 전남 나주 | 등촌길 - 단축 근무 첫 날 | 2022.0⋯
    2022.07.14
    전남 나주 | 등촌길 - 단축 근무 첫 날 | 2022.0⋯
  • 전남 화순 | 도곡 이문동길 | 2022.07.03.
    2022.07.14
    전남 화순 | 도곡 이문동길 | 2022.07.03.
  • 전남 화순 | 벽라리 | 2022.07.07.
    2022.07.14
    전남 화순 | 벽라리 | 2022.07.07.
  • 일기 | 급 기차 여행 | 2022.07.09.
    2022.07.10
    일기 | 급 기차 여행 | 2022.07.09.

티스토리

hELLO · Designed By 정상우.
<난장>

난장

Dart - 언어 시작하기 ( 반복문, 제어문)
난장 Dev/Flutter - Dart

Dart - 언어 시작하기 ( 반복문, 제어문)

2020. 5. 19. 11:32

Dart에서는 일반적인 반복, 제어문을 사용한다.

홈페이지서 설명하는 내용과 내가 이해하기 쉬운 코드로 다시 작성해보도록 하겠다.

 

  •  if and else
  • for loops
  • while and do-while loops
  • break and continue
  • switch and case
  • assert
  • (추가) try-catch and throw

 


 

if and else

Dart에서 지원되는 if 와 else 샘플이다.

if (isRaining()) {
	you.bringRainCoat();
} else if (isSnowing()) {
	you.wearJacket();
} else {
	car.putTopDown();
}

▸ Javascript 와는 달리 boolean 값을 사용하며, 다른 값은 사용해서는 안됨.

 

 

for loops

반복문 샘플 - for

var callbacks = ['a', 'b', 'c', 'd', 'e'];
for (var i = 0; i < callbacks.length; i++) {
	print("for - ${callbacks[i]}");
}

반복문 샘플 - for + forEach()

var callbacks = ['a', 'b', 'c', 'd', 'e'];
callbacks.forEach((element) { print("forEach - $element"); });

반복문 샘플 - for-in

var callbacks = ['a', 'b', 'c', 'd', 'e'];
for( var x in callbacks){
	print("for-in - $x");
}

 

 

while and do-while loops

조건을 평가하고 루프를 진행 - while

while (!isDone()) {
	doSomething();
}

루프를 실행한 후 평가 - do-while

do {
	printLine();
} while (!atEndOfPage());

 

 

break and continue

while 문으로 반복 실행 중 특정 조건이 맞다면 while을 종료 - break

var i = 0;
while(true){
	if( i >= 3 ) break;
	i++;
	print("i - $i");
}

for 루프 반복문 종료 - continue

var callbacks = ['a', 'b', 'c', 'd', 'e'];
for (var i = 0; i < callbacks.length; i++) {
      if( i >= 3) continue;
      print("for - ${callbacks[i]}");
}

 

 

switch and case

Dart의 switch 문은 정수, 문자열 또는 컴파일러 시간 상수(?, compile-time constants)를 비교함. 비교된 개체는 모두 동일한 클래스의 인스턴스여야 하며, 클래스가 재정의 되어서는 안됨.

 ▸ 같은 타입으로 비교하는 소리 같은데...

 

 그리고 case 에서 break 를 사용하는 것을 원칙으로 한다. 

var command = 'OPEN';
switch (command) {
  case 'CLOSED':
    executeClosed();
    break;
  case 'PENDING':
    executePending();
    break;
  case 'APPROVED':
    executeApproved();
    break;
  case 'DENIED':
    executeDenied();
    break;
  case 'OPEN':
    executeOpen();
    break;
  default:
    executeUnknown();
}

다음 예제는 오류가 발생되는 예. case 안에 수행하는 내용이 존재하면 오류가 발생됨.

var command = 'OPEN';
switch (command) {
  case 'OPEN':
    executeOpen();
    // ERROR: Missing break

  case 'CLOSED':
    executeClosed();
    break;
}

하지만 비어 있는 경우는 사용할 수 있다.

var command = 'CLOSED';
switch (command) {
  case 'CLOSED': // Empty case falls through.
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}

또는 continue 문을 사용하여 진행할 수 있음.

▸ 테스트 해보지 않았으나, executeClosed()를 실행한 후에 nowClosed가 명시된 case 'NOW_CLOSED'를 수행하는 것으로 보임. 

var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    executeClosed();
    continue nowClosed;
  // Continues executing at the nowClosed label.

  nowClosed:
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}

 

 

assert

 개발 환경에서 assert 문구를 사용함. assert( condition, optionalMessage); 

참/거짓 조건에서 거짓인 경우 해당 부분에서 중단됨.

var text;

assert(text != null);

 

true 인 경우 그대로 진행됨

var text;

assert(text == null);

 


  

 

 

try-catch and throw

예외처리에 관한 내용. 

throw 를 이용하여 예외상황을 만들 수 있음.

throw 'Out of llamas!';

 

try-catch 를 이용하여 예외가 발생된 코드를 처리하기 위해 사용. 이것도 다른 언어들과 거의 동일.

try {
  breedMoreLlamas();
} on OutOfLlamasException {
  // A specific exception
  buyMoreLlamas();
} on Exception catch (e) {
  // Anything else that is an exception
  print('Unknown exception: $e');
} catch (e, s) {
  // No specified type, handles all
  print('Something really unknown: $e');
}

catch 상황에서 매개 변수를 넣을 수 있는데 수에 따라 다음과 같이 처리 됨.

매개변수 0. 아무것도 없음

매개변수 1. Exception 상세 내용

매개변수 2. StackTrace 객체 

 

rethrow를 사용하면 exception 상황을 처리하고 중지되지 않고 진행되도록 한다.

void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

 

rethrow를 넣고 실행하면 main()의 catch까지 실행되며

아래와 같이 rethrow 를 주석처리 해서 실행하면

void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    //rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

 

misbehave()에서 catch가 처리되고 종료된다.

 

마지막으로 finally 처리

try {
  breedMoreLlamas();
} finally {
  // Always clean up, even if an exception is thrown.
  cleanLlamaStalls();
}

exception 발생 여부 관계없이 일부 코드를 실행시키려고 한다면 finally를 사용한다.

exception이 발생되면 발생 후에 실행되며, 발생되지 않으면 try문 코드를 실행하고 실행된다.

 

 

 

저작자표시 비영리 변경금지
  • 카카오스토리
  • 트위터
  • 페이스북
    '난장 Dev/Flutter - Dart' 카테고리의 다른 글
    • Dart - 언어 시작하기( 연산자, final, const, static )
    • Dart - 언어 시작하기 ( 구조, 변수)
    • Dart - Dart 프로젝트 만들기(VSCode)
    • Dart - 시작하기 - VSCode 설치
    DART, Flutter, 개발, 개발언어, 개발자, 구글, 프로그래밍, 플루터
    <난장>
    <난장>
    난장의 이모저모(화순 카페, 전남 카페, 일상)
    댓글쓰기
    Dart - 언어 시작하기( 연산자, final, const, static )
    다음 글
    Dart - 언어 시작하기( 연산자, final, const, static )
    Dart - 언어 시작하기 ( 구조, 변수)
    이전 글
    Dart - 언어 시작하기 ( 구조, 변수)

    티스토리툴바