Dart 기본 자료형 • 메서드 • 조건문

Ruinak·2021년 9월 18일
0

Dart

목록 보기
3/11
post-thumbnail

Dart 변수

var 사용

  • Dart는 변수를 정의할 때 var를 사용합니다.
  • 문자열도 넣을 수 있고, 숫자를 넣을 수도 있고, 실수를 넣을 수도 있습니다.
  • 뿐만 아니라 list(배열)를 넣을 수도 있습니다.
  • 클래스 안이나 메서드 안에 위치하는게 아니라 최상단에 위치가 가능합니다.
  • 1급 객체로 함수의 파라미터로 전달도 가능하며, 메모리에 떠서 로딩이 가능합니다.
// 클래스 안이나 메서드 안에 위치하는게 아니라 최상단에 위치가 가능합니다.
// 1급 객체로 함수의 파라미터로 전달도 가능하며, 메모리에 떠서 로딩이 가능합니다.
// variable 타입은 동적으로 각 라인을 읽을 때 메모리의 사이즈가 정해집니다.
// 즉 크기를 알 수 없다가, 실행될 때 크기를 알 수 있습니다.
var name = "문자열";
var num = 1;
var fNum = 1.5;
var list = ["apple", "banana"];

void main() {
  print(name);
  print(num);
  print(fNum);
  print(list);
  print(list[0]);
}

  • dart test1.dart 를 터미널에서 입력해서 실행시켜보면 출력이 잘 됩니다.

Object

// Object를 만들 때 사용하는데 Dart에서는 Map이라고 하는 자료형입니다.

......

// Object를 만들 때 사용하는데 Dart에서는 Map이라고 하는 자료형입니다.
var user = {
  "id" : 1,
  "username" : "test"
};

void main() {
  
  ......
  
  print(user);
  // 찾을 때 키 값을 넣으면 원하는 값만 찾을 수 있습니다.
  print(user["id"]);
}

  • user Object와 user의 id 값만 출력되는 것을 확인할 수 있습니다.

자료형 직접 선언

  • test2.dart를 새로 만들어 줍니다.
// Type을 지정해서 선언
String name = "문자열";
int num = 1;
double fNum = 1.5;
// 바구니(컬렉션)에 담을 수 있는 데이터는 문자열 밖에 없습니다.
// 문자열을 정의할 때 "", '' 둘다 사용가능
List<String>list = ["apple", "banana"];
// dynamic 타입은 어떤게 올지 모를 때 사용하며, 자바에서의 Object 타입이라고 생각하면 됩니다.
Map<String, dynamic> user = {
  "id" : 1,
  "username" : "test"
};

void main(){
  print(name);
  print(num);
  print(fNum);
  print(list);
  print(list[0]);
  print(user);
  print(user["id"]);
  print("유저네임은 " + user["username"]);
  // print할 때 + 는 숫자끼리 더하기가 되고, 문자끼리는 결합이 됩니다.
  // ${ }를 사용하면 가독성 좋게 사용할 수 있습니다.
  // ${ } 안에 내가 필요로 하는 값을 넣으면 출력할 수 있습니다.
  print("유저네임은 ${user["username"]}");
  print("${name} 입니다.");
}

  • print할 때 ( + )는 숫자끼리 더하기가 되고, 문자끼리는 결합이 됩니다.
  • ( + ) 대신에 ${ }를 사용하면 가독성 좋게 사용할 수 있습니다.
  • ${ } 안에 내가 필요로 하는 값을 넣으면 출력할 수 있습니다.

bool

  • bool은 true와 false 값을 가지는 자료형으로 if 조건문과 잘 맞습니다.
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
// true와 false 사용 가능
bool isRunning = true; 

void main(){
  print(isRunning);
}

Dart 메서드(함수)

기본

// 더하기 함수
add(){
  print("더하기 함수입니다.");
}

main(){
  add();
}

  • add라는 함수를 선언한 뒤 실행해보면 결과가 잘 출력됩니다.
  • 반환형을 선언하지 않았지만 dart가 알아서 반환형을 찾아주므로 작동을 잘 합니다.
// 더하기 함수
add(n1, n2){
  print("더하기 함수입니다.");
  print(n1 + n2);
}

main(){
  add(3, 5);
}

  • 변수를 선언한 뒤 실행해도 잘 실행됩니다.
  • 변수의 자료형을 선언하지 않았지만 dart가 알아서 지정을 해서 작동합니다.
  • 단, 반환형과 자료형을 명시적으로 선언해주지 않으면 위험하므로 Type을 넣어주는게 좋습니다.
// 더하기 함수
void add(int n1, int n2){
  print("더하기 함수입니다.");
  print(n1 + n2);
}

void main(){
  add(3, 5);
}
  • 하지만 int로 명확하게 지정을 하게 되면, n에 실수가 들어가면 받지를 못합니다.
  • 그러나 var을 사용하면 받을 수 있으므로, 자료형을 명확하게 모를때는 var을 사용하는게 좋습니다.
// 더하기 함수
void add(int n1, var n2){
  print("더하기 함수입니다.");
  print(n1 + n2);
}

void main(){
  add(3, 5.5);
}

Dart의 오버로딩

// 더하기 함수
void add({int n1 = 1, var n2 = 1}){
  print("더하기 함수입니다.");
  print(n1 + n2);
}

// dart는 오버로딩이 되지 않음.
// dart는 중괄호를 사용해서 매개변수를 선택적으로 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
  add(n1 : 10);
}

  • Java같은 경우는 어떠한 함수의 매개변수가 다를 때 오버로딩이 됩니다.
  • Dart는 var를 사용하면 간단하게 해결됩니다.
  • 매개변수 선언부를 중괄호로 감싸주면 매개변수를 다 사용하지 않아도 함수를 사용할 수 있습니다.
  • Dart가 오버로딩을 대체하는 방법입니다.
// 더하기 함수
add({int n1 = 1, var n2 = 1}){
  print("더하기 함수입니다.");
  // print(n1 + n2);
  return n1 + n2;
}

// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
  var result = add(n1 : 10, n2 : 20.5);
  print(result);
}

  • 위와 같은 방법으로도 사용이 가능합니다.

Function

// 더하기 함수
// Function 타입을 사용해서 변수에 담을 수도 있습니다.
Function add = ({int n1 = 1, var n2 = 1}){
  print("더하기 함수입니다.");
  // print(n1 + n2);
  return n1 + n2;
};

// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
  var result = add(n1 : 10, n2 : 20.5);
  print(result);
}
  • Function 타입을 사용해서 메서드를 변수에 담을 수도 있습니다.
// 더하기 함수
// Function 타입을 사용해서 변수에 담을 수도 있습니다.
Function add = ({int n1 = 1, var n2 = 1}){
  print("더하기 함수입니다.");
  // print(n1 + n2);
  return n1 + n2;
};

void hello(Function t) {
  t();
}

// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
  hello(add);
}

  • Dart는 함수도 함수의 파라미터로 전달이 가능합니다.

var과 dynamic의 차이는?

main() {
  // var과 dynamic의 차이는?
  // 4번 라인 실행시에 10이 num에 들어갔기 때문에 타입이 고정되어 버립니다.
  var num = 10;
  num = '안녕';

  // 8번 라인 실행시에 20이 sum에 들어갔지만 타입이 고정되지 않습니다.
  dynamic sum = 20;
  sum = "안녕";
}

조건문

if 조건문

  • if는 기본 조건문입니다.
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
bool isRunning = true; // false

void main(){
  print(isRunning);
  
  // 기본 조건문
  if(isRunning){
    print("참입니다.");
  } else {
    print("거짓입니다.");
  }
}

삼항 연산자

  • 삼항 연산자의 형식
    (String s = 조건 ? 데이터1 : 데이터 2)
  • Flutter에서는 일반 조건문보다 삼항 연산자를 더 많이 씁니다.
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
bool isRunning = false; // false

void main(){
  print(isRunning);
  
  // 삼항 연산자 (String s = 조건 ? 데이터1 : 데이터 2)
  // Flutter에서는 일반 조건문보다 삼항 연산자를 더 많이 씁니다.
  // isRunning의 위치에 조건문이 들어갑니다.
  String s = isRunning ? '참입니다.' : '거짓입니다';
  print("결과 ${s}");

  // 기본 조건문
  if(isRunning){
    print("참입니다.");
  } else {
    print("거짓입니다.");
  }
}

Elvis 연산자는 사용이 안 됨.

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글