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

 

'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