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
'STUDY > Rust' 카테고리의 다른 글
Rust - 17. Cargo와 Crates.io (0) | 2024.03.19 |
---|---|
Rust - 16. 반복자 (0) | 2024.03.14 |
Rust - 14. I/O 프로젝트 CLI 프로그램 만들기 (0) | 2024.03.11 |
Rust - 13. 자동화 테스트 (0) | 2024.03.07 |
Rust - 12. 라이프 타임 (1) | 2024.03.05 |