1) 함수의 형태
타입명 함수이름(파라미터 => 타입 명시 중요!)int sum(int a, int b){ return a+b; } void main(){ int result = sum(3,4); print(result); }
2) optional parameter
-> 넣어도 되고 안 넣어도 되는 파라미터 => [ ] 사용
-> 디폴트 값을 대괄호 안에서 지정가능 ex)[int b = 3]void printAB(int a, [int b]){ print(a); print(b); } void printAB2(int a, [int b = 3]){ print(b); } void main(){ printAB(3); //3 null(b값을 안 넣었기 때문) printAB2(3); // 3(디폴트 값이 출력됨) }
3) 순서랑 관계없이 파라미터 넣는 법
파라미터값이 많아지면 순서가 헷갈리게 됨 SO { }를 활용해서 해결할 수 있다!int sum({int a, int b, int c, int d}){ return a + b + c + d; } void main(){ int result = sum( //인자를 넣을때 ':' 사용 b : 1, a : 3, d : 4, c : 2 ); print(result); }
익명함수 : 다른 함수처럼 변수에 할당하여 컬렉션에서 추가하거나 제거할 수 있음!
1) 함수를 파라미터로 받는 함수 필요!
ex) void routine(Function start){start();}
2) 익명함수 형태 : 함수이름((){실행문});({ } 중요)
ex) routine((){print("짜파게티 먹기"});
3) 람다함수 : 함수이름(()=>실행문);
ex)routine(()=>"신라면 먹기");
- 람다함수와 익명함수의 차이점
: 익명함수는 두줄 이상일 때, 람다함수는 한줄 표현 대신에 =>가 return 역할을 대신함//하루 루틴을 결정해주는 함수 void routine(Function start){ String result = start(); print(result); } void main() { routine((){ //두줄 이상이면 익명함수를 사용해야된다. print("짜파게티 먹는 생각에 행벅~"); return "짜파게티"; }); //한줄만 적어서 리턴을 원할 경우 람다 routine(()=> "신라면 먹기"); } 출력 짜파게티 먹는 생각에 행벅~ 짜파게티 신라면 먹기
typedef : 함수를 변수처럼 사용가능하게 해줌!
ex) //MAIN 밖에서
typedef 이름(대문자) (파라미터); 함수들 이것저것 선언
typedef이름 변수이름 = 함수; => 함수를 변수처럼typedef Operation(int x, int y); void add(int x, int y){ print(x + y); } void subtract(int x, int y){ print(x - y); } void main(){ add(1, 2); subtract(4, 3); Operation oper = add; //함수를 변수처럼 oper(1, 2); // 3 oper = subtract; //함수 변경도 가능 oper(4, 3); // 1 }