Dart 언어에서 세미콜론(;), 쉼표(,), 마침표(.)의 사용법
1. 세미콜론 (;)
세미콜론은 Dart에서 단순 문장을 종료할 때 사용합니다:
1. 변수 선언 및 할당:
dart
var x = 5;
int y = 10;
2. 함수 호출:
dart
print('안녕하세요');
3. return 문:
dart
return 값;
4. import 문:
dart
import 'package:flutter/material.dart';
5. 하지만 다음의 경우에는 세미콜론을 사용하지 않습니다:
복합 문장 (중괄호로 둘러싸인 코드 블록):
dart
if (조건) {
// 코드
} // 닫는 중괄호 뒤에 세미콜론 없음
6. 클래스, 메소드, 함수 선언:
dart
class 내클래스 {
void 내메소드() {
// 코드
}
} // 닫는 중괄호 뒤에 세미콜론 없음
2. 쉼표 (,)
쉼표는 Dart에서 다음과 같은 경우에 구분자로 사용됩니다:
1. 리스트 항목:
dart
var 내리스트 = [1, 2, 3];
2. 함수 매개변수:
dart
void 내함수(int a, String b, bool c) {
// 코드
}
3. Flutter 위젯의 명명된 매개변수:
dart
Container(
width: 300,
color: Colors.blue,
child: Text('안녕하세요'),
)
4. 후행 쉼표: 선택사항이지만 특히 여러 줄 구조에서 더 나은 포맷팅을 위해 권장됩니다:
dart
var 내리스트 = [
1,
2,
3, // 후행 쉼표
];
3. 마침표 (.)
Dart에서 마침표는 다음과 같이 사용됩니다:
1. 객체의 속성이나 메소드 접근:
dart
내객체.속성
내객체.메소드()
2. 라이브러리의 특정 부분 가져오기:
dart
import 'package:내패키지/내파일.dart' show 내클래스;
3. 캐스케이드 표기법(..)으로 동일한 객체에 대해 여러 작업 수행:
dart
querySelector('#button')
..text = '클릭하세요'
..classes.add('중요')
..onClick.listen((e) => window.alert('클릭됨'));
이러한 구두점의 올바른 사용은 코드가 정확히 컴파일될 뿐만 아니라
가독성과 유지보수성을 향상시킵니다.
Dart 포맷터를 사용하면 특히 후행 쉼표를 사용할 때
일관된 포맷팅을 유지하는 데 도움이 됩니다
기타 특수 문자 및 특수 케이스
1. 문자열 보간 ($)
$ 기호는 Dart에서 문자열 보간(String Interpolation)을 위해 사용됩니다:
단순 변수 삽입:
dart
var name = '홍길동';
print('안녕하세요, $name님!');
표현식 삽입:
dart
var a = 5;
var b = 3;
print('$a + $b = ${a + b}');
2. 이스케이프 문자 ($$:
상황: 문자열 내에서 특수 문자를 그대로 표현하고 싶을 때 사용합니다.
dart
var s = 'It\'s a string'; // 작은따옴표 안에서 작은따옴표를 사용할 때
var path = "C:\\Program Files\\Dart"; // 백슬래시를 표현할 때
3. 여러 줄 문자열 (''' 또는 """):
상황: 줄바꿈이 포함된 긴 문자열을 작성할 때 유용합니다.
dart
var multiLine = '''
이것은
여러 줄
문자열입니다.
''';
4. 로우 문자열 (r):
상황: 이스케이프 문자를 처리하지 않고 문자열을 그대로 사용하고 싶을 때 유용합니다.
dart
var path = r'C:\Windows\System32'; // 백슬래시를 이스케이프 처리 없이 그대로 사용
5. 캐스케이드 표기법 (..):
상황: 동일한 객체에 대해 연속적인 작업을 수행할 때 사용합니다.
dart
querySelector('#button')
..text = '클릭하세요'
..classes.add('important')
..onClick.listen((e) => print('클릭됨'));
6. 널 인식 연산자 (?., ??, ??=):
상황: 널 안전성을 다룰 때 사용합니다.
dart
// ?. : 객체가 널이 아닐 때만 메서드나 속성에 접근
String? name;
print(name?.toLowerCase());
// ?? : 좌변이 널일 경우 우변의 값을 사용
var displayName = name ?? '게스트';
// ??= : 변수가 널일 경우에만 값을 할당
name ??= '홍길동';
7. 타입 테스트 연산자 (is, is!):
상황: 객체의 타입을 확인할 때 사용합니다.
dart
if (obj is String) {
print('문자열입니다');
}
8. 심볼 (#):
상황: 컴파일 시간에 고유한 식별자가 필요할 때 사용합니다. 주로 리플렉션에서 활용됩니다.
dart
Symbol libraryName = Symbol('custom_lib');
9. 비동기 프로그래밍 (async, await):
상황: 비동기 작업을 동기적으로 보이게 작성할 때 사용합니다.
dart
Future<void> fetchData() async {
var result = await someAsyncFunction();
print(result);
}
10. 스프레드 연산자 (...):
상황: 컬렉션의 요소를 다른 컬렉션에 펼쳐 넣을 때 사용합니다.
dart
var list = [1, 2, 3];
var newList = [0, ...list, 4]; // [0, 1, 2, 3, 4]
11. 조건부 멤버 접근 (?[ ]):
상황: 널이 될 수 있는 리스트나 맵의 요소에 안전하게 접근할 때 사용합니다.
dart
List<int>? numbers;
int? firstNumber = numbers?[0];
12. 타입 프로모션 (as):
상황: 타입 캐스팅이 필요할 때 사용합니다.
dart
(employee as Manager).manageTeam();
이러한 특수 문자와 특수 케이스들은 Dart 프로그래밍에서
코드를 더 간결하고 안전하며 효율적으로 만드는 데 도움을 줍니다.
각각의 상황에 맞게 적절히 사용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.
동기 비동기 특강
직렬 vs 병렬 개념으로 이해
Future 함수 사용 예제 - await를 걸면 동기처럼 / 안걸면 비동기처럼 출력
then과 catch를 사용하여 오류 처리
예외처리
'공부 일기 > TIL' 카테고리의 다른 글
Flutter 창업반 6주차 TIL3-1 RiverPod-책검색 앱 만들기, 웹 개발 관련 (1) | 2024.12.04 |
---|---|
Flutter 창업반 6주차 TIL2 상태 관리 패키지(RiverPod)관련 복습/실습 (0) | 2024.12.03 |
Flutter 창업반 5주차 TIL2 상태 관리 패키지(RiverPod), VS Code 단축키 (1) | 2024.11.29 |
Flutter 창업반 5주차 TIL1 - 데이터 통신 기초와 JSON, MVVM 아키텍쳐 (0) | 2024.11.29 |
Flutter 창업반 3주차 TIL2 - 라이브러리 이용, 동기/비동기 (3) | 2024.11.08 |