STUDY/Rust
Rust - 15. 클로저
sinawi95
2024. 3. 11. 20:37
728x90
함수형 프로그래밍이다.
반복자: 일련의 요소들을 처리할수 있는 방법 -> 일련의 요소라고 하면 그냥 for로 부를수 있는 것들인가?
클로저: 변수에 저장할수 있는 함수와 유사한 구조 -> 변수에 저장하는 함수? 모던 자바스크립트나 파이썬에서 쓰는 느낌
1. 클로저
|args:input_type| -> output_type { /*code*/ }
|args| { /*code*/ }
|| /*code*/
ex)
|| println!("hello, world");
|x| println!("hello, {}",x);
클로저: 변수에 저장하거나 다른 함수에 인수로 저장할수 있는 익명 함수
- 여기에 더해서 현재 상황을 캡처할수 있다. 캡처한다는게 말이 어렵거나 헷갈릴수 있는데 초기화 당시에 쓰인 변수나 파라미터들을 갖고 있을 수 있다는 뜻이다.
함수와 클로저의 차이
- 환경을 캡처할수있음
- 매개변수나 반환값 타입을 명시하지 않아도 됨.(짧은 컨텍스트내에서만 관련되므로 추론해서 사용)
- 명시적으로 사용할수 있음
let t_closure = |x| x;
let s = t_closure(String::from("test"));
let n = t_closure(0); // Error
- 다른 타입이 들어가는 클로저를 호출하면 타입에러를 발생시킴
https://doc.rust-kr.org/ch13-00-functional-features.html