본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] Dart 문법 (변수, 함수, 화살표 함수, 조건문, 반복문)

by 채연2 2021. 3. 15.

 

 

 

 

* 변수 : 모든 변수들이 Calss 안에 있을 필요는 없다!!


		
var name = 'Voyager I';
var year = 1977;
var antennaDiameter = 3.7;
var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
var image = {
'tags': ['saturn'],
'url': '//path/to/saturn.jpg'
};
class TestCalss {
var fruit = "apple";
var num = 5;
var sub_fruit = ['banana', "orange"];
}
void main() {
print(name);
print(year);
print(antennaDiameter);
print(flybyObjects); //LIST
print(flybyObjects[0]);
print(image); //MAP
print(image['tags']);
TestCalss tc = TestCalss();
print(tc.fruit + " : " + tc.num.toString() + ", " + tc.sub_fruit.toString());
}

		
//결과
Voyager I
1977
3.7
[Jupiter, Saturn, Uranus, Neptune]
Jupiter
{tags: [saturn], url: //path/to/saturn.jpg}
[saturn]
apple : 5, [banana, orange]

 

 

* 조건문, 반복문


		
var name = 'Voyager I';
var year = 1977;
var antennaDiameter = 3.7;
var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
var image = {
'tags': ['saturn'],
'url': '//path/to/saturn.jpg'
};
void main() {
if (year >= 2001) {
print('21st century');
} else if (year >= 1901) {
print('20th century');
}
var index = 0;
for (var elem in flybyObjects) {
print("[" + index.toString() + "] " + elem);
index++;
}
var monthStr = "";
for (var month = 1; month <= 12; month++) {
monthStr += month.toString() + " ";
}
print(monthStr);
while (year < 2016) {
year += 3;
print(year);
}
}

		
//결과
20th century
[0] Jupiter
[1] Saturn
[2] Uranus
[3] Neptune
1 2 3 4 5 6 7 8 9 10 11 12
1980
1983
1986
1989
1992
1995
1998
2001
2004
2007
2010
2013
2016

 

 

* 함수 : Dart는 타입 명시해도 되고 안해도 된다. 타입 추론이 가능하여 var 변수 선언이 가능하다!!


		
int fibonacci(int n) {
return n * 10;
}
void main() {
var result = fibonacci(20);
print(result);
}
//타입 생략
fibonacci(int n) {
return n * 10;
}
void main() {
var result = fibonacci(20);
print(result);
}

		
//결과
200

 

 

* 화살표 함수

- forEach 함수는 리스트 각 요소에 f함수를 실행시킴.

- where 함수는 각 요소를 elem으로 칭하고, elem에 'turn'이 포함되어 있는 요소를 골라 forEach 실행.


		
var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
var result = '';
void f(String s) {
result = result + s + ' ';
}
//void forEach(void Function(String) f)
//forEach : Applies the function [f] to each element of this collection in iteration order.
//Iterable<String> where(bool Function(String) test)
//where : Returns a new lazy [Iterable] with all elements that satisfy the predicate [test].
void main() {
flybyObjects.forEach(f);
print(result);
flybyObjects.where((elem) => elem.contains('turn')).forEach(print);
}

		
//결과
Jupiter Saturn Uranus Neptune
Saturn

 

 

* 주석 : java 와 같음

 


같이 보면 좋은 다른 포스팅

https://cording-cossk3.tistory.com/82

 

[Flutter] Dart 문법 (class, ?, !, ?.)

* 클래스 ?, !, ?.등 각각이 의미하는 바를 파악하지 못해서 너무 헤맸지만 의미를 알고나니 코드가 이해가 갔다... class Spacecraft { // ? : 개체가 null일 수 있음 String? name; DateTime? launchDate; //Constructor,

cording-cossk3.tistory.com

https://cording-cossk3.tistory.com/83

 

[Flutter] Dart 문법 (상속)

* 상속 class Spacecraft { String? name; DateTime? launchDate; //Constructor, with syntactic sugar for assignment to members. Spacecraft(this.name, this.launchDate) { //Initialization code goes here. } Spacecraft.origin() { name = "무탈리스크"; launc

cording-cossk3.tistory.com

https://cording-cossk3.tistory.com/84

 

[Flutter] Dart 문법 (abstract, implement)

* 추상클래스, implement : 추상클래스 및 일반 클래스 implement 가능. - implement하면 클래스가 구현해 둔 메서드도 재정의 해야할 강제성이 생김. (일반 메서드도 구현해야 함) class Spacecraft extends Describ

cording-cossk3.tistory.com

https://cording-cossk3.tistory.com/85

 

[Flutter] Dart 문법 (async, Future, await, then)

* 비동기 - 아래 printWithDelay함수에서 await를 빼고 실행시키면 Future.delayed와 print가 동시에 실행되는 듯 하고, await을 넣고 실행시키면 delay가 적용된 후에 print가 실행된다. //Future : An object representing

cording-cossk3.tistory.com

https://cording-cossk3.tistory.com/86

 

[Flutter] Dart 문법 (getter, setter)

* getter, setter class Rectangle { double left, top, width, height; Rectangle(this.left, this.top, this.width, this.height); //Define two calculated properties : right and bottom. double get right => left + width; set right(double value) => left = value -

cording-cossk3.tistory.com

 

 

 

320x100

댓글