Programming

Rust기초 알기 - 5.3 메서드와 연관 함수

IT오이시이 2023. 7. 6. 00:28
728x90

 

 

Rust기초알기(5) - 구조체와 열거형

5.1 구조체 정의와 사용
5.2 열거형 정의와 사용
5.3 메서드와 연관 함수

[목차] Rust Programming - Rust 기초 알기 목차.Zip

#Rust프로그래밍  #Rust언어기초 #Rust기초문법 #Rust기초알기

 

 

Rust기초 알기 -  5.3 메서드와 연관 함수

 
Rust에서 메서드(Method)와 연관 함수는 객체 지향 프로그래밍 언어에서의 메서드와 유사한 개념입니다. 이들은 구조체(struct)나 열거형(enum)의 정의 내부에 선언되어 해당 타입에 속한 함수로 동작합니다.
메서드: 메서드는 주로 특정 타입의 인스턴스와 관련된 동작을 수행하기 위해 사용됩니다. 인스턴스의 데이터에 접근하여 수정하거나 연산을 수행하는 등의 작업을 수행할 수 있습니다.
연관 함수: 연관 함수는 주로 타입과 관련된 작업을 수행하기 위해 사용됩니다. 주로 생성자 함수(Constructor)로 사용되거나, 타입과 관련된 편의 함수를 제공하는 데 활용될 수 있습니다.
 

Rust 메서드(Method)

 
Rust에서 메서드(Method)는 특정 타입의 인스턴스에 속한 함수로, 해당 타입과 관련된 동작을 수행하는 기능입니다
메서드는 해당 타입의 인스턴스를 통해 호출됩니다. 인스턴스의 소유권을 가지고 실행됩니다. 이는 메서드가 인스턴스 내부의 데이터에 접근하고 수정할 수 있다는 것을 의미합니다.

메서드는 다음과 같은 특징을 가지고 있습니다:

1. 인스턴스의 소유권을 가지고 실행됩니다:
메서드는 특정 타입의 인스턴스에 속한 함수이므로, 해당 인스턴스의 데이터에 접근하고 수정할 수 있습니다. 이를 위해 메서드는 인스턴스의 소유권을 가지고 실행됩니다.

2. self 키워드를 사용하여 자신이 속한 인스턴스에 접근합니다:
메서드는 self라는 키워드를 사용하여 자신이 속한 인스턴스에 접근합니다. self는 해당 인스턴스를 참조하는 데 사용되며, 일반적으로 self의 타입을 명시합니다.
 
 

struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    // Rectangle 타입에 대한 메서드 정의
    fn area(&self) -> u32 {
        self.width * self.height
    }
}

fn main() {
    let rect = Rectangle { width: 10, height: 20 };
    println!("넓이: {}", rect.area()); // "넓이: 200" 출력
}

 

  • 위의 예제에서 area()는 Rectangle 구조체에 대한 메서드입니다. 
  • self 매개변수를 통해 Rectangle 인스턴스에 접근하고 해당 인스턴스의 width와 height 필드를 곱하여 넓이를 계산합니다.

메서드는 객체 지향 프로그래밍에서 일반적으로 사용되는 개념으로, 특정 타입과 관련된 동작을 해당 타입의 인스턴스에 적용할 때 유용하게 사용됩니다.
 

연관 함수(Associated Function)

연관 함수(Associated Function)는 특정 타입에 속하지만 인스턴스에 속하지 않는 함수입니다. 이러한 함수는 정적(static) 함수로 impl 블록 내부에서 선언됩니다. 
 
연관 함수는 해당 타입과 관련된 동작을 수행하기 위해 사용됩니다. 이 함수들은 impl 블록 내부에서 선언되며, 타입 이름을 통해 호출할 수 있습니다. 인스턴스를 생성하지 않고도 연관 함수를 호출할 수 있습니다.
연관 함수의 특징은 다음과 같습니다:

1. 인스턴스의 소유권을 가지지 않습니다.
즉, 연관 함수는 자신이 속한 타입의 인스턴스에 직접 접근할 수 없습니다.

2. 연관 함수는 타입 이름을 통해 호출됩니다. 
예를 들어, Type::function()과 같은 형태로 호출할 수 있습니다.

3. 주로 생성자 함수(Constructor)로 사용될 수 있습니다.
연관 함수를 사용하여 타입의 인스턴스를 생성하고 초기화할 수 있습니다.


다음은 Rust에서 연관 함수를 정의하는 방법의 예입니다:

struct Circle {
    radius: f64,
}

impl Circle {
    // Circle 타입에 대한 연관 함수 정의
    fn new(radius: f64) -> Circle {
        Circle { radius }
    }

    // 넓이를 반환하는 Method 함수
    fn area(&self) -> f64 {
        std::f64::consts::PI * self.radius * self.radius
    }
}

fn main() {
    let circle = Circle::new(5.0); // 연관 함수 호출
    println!("넓이: {}", circle.area()); // "넓이: 78.53981633974483" 출력
}

 

  •  new()는 Circle 타입에 대한 연관 함수입니다. new() 함수는 Circle 구조체의 인스턴스를 생성하고, 생성한 인스턴스를 반환합니다. 
  • area()는 Circle 인스턴스에 대한 메서드이며, self를 통해 인스턴스의 radius 필드에 접근하여 원의 넓이를 계산합니다.

 
 
Rust에서 메서드는 특정 타입의 인스턴스에 속한 함수로, 인스턴스의 소유권을 가지고 실행됩니다. 
연관 함수는 특정 타입에 속하지만 인스턴스에 속하지 않는 함수로, 타입 이름을 통해 호출될 수 있고 인스턴스의 소유권을 가지지 않습니다.

728x90
반응형