Dart 어서 오고~
역시 처음 국룰은 그놈의 'Hello World' 띄워주는 거 아니겠니
기초 문법
1. 메인 함수
다트는 프로그램 시작점인 엔트리 함수 기호로 main()을 사용한다.
void main() {
}
{ } 이 중괄호 사이에 코드를 입력하면 되고 void는 아무 값도 반환하지 않는다는 뜻.
그리고 main 뒤의 괄호 () 안에는 매개 변수를 지정할 수 있고 아무것도 없으니까 아무런 매개변수도 받지 않는다는 뜻
2. 주석
아 주석 중요하지~
주석 열심히 좀 달아야지라고 말할 때 주석 좀 달껄
어쨌든 주석이 있고 없고는 코드를 이해하는 데 걸리는 시간을 많이 단축시켜 주기 때문에 뭐라도 달아주자~
// 또는 /* */
void main()
{
// 주석
// 한 줄 주석
/* * 여러 줄 주석 방법입니다. * 시작 기호는 /*이고 끝나는 기호는 */
입니다. * 필수는 아니지만 관행상 중간 줄의 시작으로 *를 사용합니다. * */
/// 슬래시 세 개를 사용하면
/// 문서 주석을 작성할 수 있습니다.
/// DartDoc이나 안드로이드 스튜디오 같은
/// IDE에서 문서(Documentation)로 인식합니다.
}
3. print() 함수
자 드디어 Dart 공부의 시작을 알리는 'Hello World' 문자열을 콘솔에 출력해주는 print() 함수
void main(){
print('Hello World');
}
반갑다 Hello World 야
4. 변수 선언
변수 선언은 기본적으로 var 변수명 = 값; 형식으로 선언
Dart는 변수에 값이 들어가면 자동으로 타입을 추론하기 때문에 String int 등 명시적으로 타입을 선언하지 않아도 된다
실제 코드로 컴파일될 때 var 가 추론된 타입으로 치환된다
오호... 그럼 그냥 무지성으로 var 박으면 되는 건가?
void main(){
var name = '나는안울어';
print(name);
// 변숫값 변경 가능
name = '가끔은울어';
print(name);
// 변수명 중복은 불가능
// 코드에서 에러 발생
// var name = '차은우';
}
? 오 뭐야 코드는 아하 <> 코드블록에 적으면 되는구만??
왜.. name 차은우하고 싶다고 ㅡㅡ
5. dynamic / Object를 사용한 변수 선언
var 타입은 변수의 값을 사용해서 변수의 타입을 유추하는 키워드 이기 때문에
타입을 한번 유추하여 정해지면 타입이 고정된다.
그래서 유추된 타입과 다른 변수 타입의 값을 넣어주면 에러가 발생
하지면 여기서 dynamic 또는 Object 키워드를 사용하면 변수 타입이 고정되지 않아서 다른 타입의 값을 지정할 수 있다
void main() {
dynamic name = '차은우';
name = 1;
Object myName = '뷔';
myName = 1;
}
6. null 관련 변수 선언
Dart 언어에서는 변수 타입이 null 값을 가지는지 여부를 직접 지정해줘야 한다.
타입 키워드를 그대로 사용하면 기본적으로 null 값이 저장될 수 없다.
타입 뒤에 '?'를 추가해 줘야 null 값이 저장될 수 있다.
void main() {
// 타입 뒤에 ?를 명시해서 null값을 가질 수 있습니다.
double? number1 = 1;
// 타입 뒤에 ?를 명시하지 않아 에러 발생
double number2 = null;
}
null을 가질 수 있는 변수에 새로운 값을 추가할 때?? 를 사용하면 기존에 null 일 때만 값이 저장되도록 할 수 있다.
void main() {
double? number; // 자동으로 null값 지정
print(number);
number ??= 3; // ??를 사용하면 기존 값이 null일 때만 저장됩니다.
print(number);
number ??= 4; // null이 아니므로 3이 유지됩니다.
print(number);
}
▼ 실행 결과
null
3.0
3.0
7. final / const를 사용한 변수 선언
기본적으로 final과 const를 사용해서 선언한 변수의 값을 처음 선언 후 변경 할 수 없다.
void main() {
final String name = '나는안울어';
name = '차은우'; // 에러 발생. final로 선언한 변수는 선언 후 값을 변경할 수 없음
const String name2 = '뉴진스';
name2 = '블랙핑크'; // 에러 발생. const로 선언한 변수는 선언 후 값을 변경할 수 없음
}
근데 두 개가 똑같은 기능 아닌가? 왜 나눠 쓰지? 하고 알아봤더니
final 은 런타임, const는 빌드 타입 상수인데
즉 코드를 실행하지 않은 상태에서 값이 확정된다면 const를 사용, 실행될 때 확정 된다면 final을 사용 해아 한다는 뜻
간단하게 DateTime.now()를 이용해 테스트해보면
void main() {
final DateTime now = DateTime.now();
print(now);
}
이 코드는 에러 없이 잘 실행되지만
void main() {
// 에러
const DateTime now = DateTime.now();
print(now);
}
이 코드는 에러가 발생 -> 코드가 실행되기즌에 const에 값을 할 수 없기 때문에 에러 발생
8. 변수 타입
var를 사용하면 자동으로 변수 타입을 유추해서 정해주지만
직접 변수 타입을 명시해 주면 코드가 더욱 직관적이고 유지보수도 편해진다
타입은 문자열, 정수, 실수, 불리언(true/false)이 있다
void main(){
// String - 문자열
String name = '차은우';
// int - 정수
int isInt = 10;
// double - 실수
double isDouble = 2.5;
// bool - 불리언 (true/false)
bool isTrue = true;
print(name);
print(isInt);
print(isDouble);
print(isTrue);
}
▼ 실행 결과
차은우
10
2.5
true
'개발이야기' 카테고리의 다른 글
Javascript 현재 날짜 한 달 전 날짜 세 달 전 날짜 계산하기 setMonth() (0) | 2024.11.02 |
---|---|
Dart 다트 입문기 다트 언어 기본 알아보기 [2] -컬렉션 (6) | 2024.09.30 |
Flutter 앱 만들기 다트(Dart) 프로그래밍 언어 조져 보자 (2) | 2024.09.30 |
Flutter 와 React Native 중 어플 개발 어떤게 좋을까? (1) | 2024.09.27 |
아 맞다 나 개발자였지? (1) | 2024.09.27 |