상세 컨텐츠

본문 제목

12. Rust 듀플(tuple)

Rust를 처음부터 배우세요

by 러스트코리아 2024. 11. 15. 19:09

본문

반응형

Rust는 튜플을 지원합니다. 그리고 튜플은 복합 유형 입니다 .

스칼라 유형과 복합 유형

  1. 기본/스칼라 유형은 한 가지 유형의 데이터만 저장할 수 있습니다. 예를 들어 i32 변수는 숫자만 저장할 수 있습니다.
  2. 복합 유형은 다양한 유형의 데이터를 저장할 수 있습니다.

복합형은 다양한 종류의 야채를 담을 수 있는 야채 바구니와 같습니다.

12.1 튜플

튜플의 길이는 고정되어 있습니다. 그리고 일단 정의되면 커지거나 줄어들 수 없습니다.

튜플 인덱스는 0부터 시작합니다.

12.1.1 튜플 정의 구문

Rust 언어의 튜플 정의 구문은 다음과 같습니다.

  1. let tuple_name:(data_type1,data_type2,data_type3) = (value1,value2,value3);

튜플을 정의할 때 데이터 유형을 무시할 수도 있습니다.

  1. let tuple_name = (value1,value2,value3);

Rust에서 튜플의 정의는 매우 간단합니다. 즉, 한 쌍의 괄호()를 사용하여 모든 요소를 ​​하나로 묶고, 쉼표를 사용하여 요소를 구분하는 것입니다.

튜플 데이터 유형을 정의할 때도 마찬가지입니다.

그러나 튜플의 데이터 유형이 명시적으로 지정된 경우 데이터 유형의 개수는 튜플의 개수와 동일해야 하며, 그렇지 않으면 오류가 보고된다는 점에 유의해야 합니다.

12.1.2 예 1

튜플의 모든 요소를 ​​출력하려면 {:?} 포맷터를 사용해야 합니다.

  1. fn main() {
  2. let tuple:(i32,f64,u8) = (-325,4.9,22);
  3. println!("{:?}",tuple);
  4. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. (-325, 4.9, 22)

다음 출력 문을 사용하면 튜플의 요소가 출력되지 않습니다.

  1. println!("{ }",tuple)

Tuple은 복합형 이므로 복합형 데이터를 출력하려면 println!(“{:?}”, tuple_name)을 사용해야 합니다.

12.1.3 튜플의 개별 요소에 접근하기

튜플 이름.인덱스 번호를 사용하여 튜플의 해당 인덱스 위치에 있는 요소에 액세스할 수 있습니다. 인덱스는 0부터 시작합니다.

예를 들어 다음 튜플에는 3개의 요소가 있습니다.

  1. let tuple:(i32,f64,u8) = (-325,4.9,22);

다음과 같은 방법으로 각 요소에 액세스할 수 있습니다.

  1. tuple.0 // -325
  2.  
  3. tuple.1 // 4.9
  4.  
  5. tuple.2 // 22

12.1.4 예

다음 예에서는 튜플 이름.인덱스 번호를 기준으로 튜플의 각 요소를 출력하는 방법을 보여줍니다 .

  1. fn main() {
  2. let tuple:(i32,f64,u8) = (-325,4.9,22);
  3. println!("integer is :{:?}",tuple.0);
  4. println!("float is :{:?}",tuple.1);
  5. println!("unsigned integer is :{:?}",tuple.2);
  6. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. integer is :-325
  2. float is :4.9
  3. unsigned integer is :2

12.2 튜플은 함수의 매개변수로도 사용될 수 있습니다

Rust 언어에서는 튜플을 함수 매개변수로 사용할 수도 있습니다.

함수 매개변수의 튜플 매개변수 선언 구문은 요소 변수 선언과 유사합니다.

  1. fn function_name(tuple_name:(i32,bool,f64)){}

12.2.1 예

다음 코드에서는 튜플을 매개변수로 받아들이고 튜플의 모든 요소를 ​​인쇄하는 함수 print를 선언합니다.

  1. fn main(){
  2. let b:(i32,bool,f64) = (110,true,10.9);
  3. print(b);
  4. }
  5.  
  6. // 튜플을 매개변수로 사용
  7. fn print(x:(i32,bool,f64)){
  8. println!("Inside print method");
  9. println!("{:?}",x);
  10. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. Inside print method
  2. (110, true, 10.9)

12.2.2 튜플 분해 할당(파괴) =

구조 분해 할당(destructing)은 튜플(tuple)의 각 요소를 변수에 하나씩 순서대로 할당하는 것입니다.

12.2.3 튜플 구조 분해 할당(파괴) 구문 형식

튜플 구조 분해 할당(파괴)의 구문 형식은 다음과 같습니다.

  1. (age,is_male,cgpa) = (30,true,7.9);

위의 할당 작업을 튜플 구조 분해 할당이라고 하며, 등호(=) 오른쪽에 있는 튜플의 요소를 등호 왼쪽에 있는 튜플의 변수에 하나씩 순서대로 할당합니다.

할당이 완료되면 왼쪽의 각 변수의 값은

  1. age = 30;
  2. is_male = true;
  3. cgpa = 7.9;

구조 분해 작업은 Rust 언어의 기능이며 최신 JavaScript 언어에도 구조 분해 작업이 있습니다.

12.2.4 예

  1. fn main(){
  2. let b:(i32,bool,f64) = (30,true,7.9);
  3. print(b);
  4. }
  5. fn print(x:(i32,bool,f64)){
  6. println!("Inside print method");
  7. let (age,is_male,cgpa) = x; //assigns a tuple to
  8. distinct variables
  9. println!("Age is {} , isMale? {},cgpa is
  10. {}",age,is_male,cgpa);
  11. }

위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.

  1. Inside print method
  2. Age is 30 , isMale? true,cgpa is 7.9
현재 콘텐츠 저작권은 chapin666 또는 그 계열사에 있습니다.

 

반응형

'Rust를 처음부터 배우세요' 카테고리의 다른 글

14. Rust 소유권  (0) 2024.11.15
13. Rust 배열  (0) 2024.11.15
11. Rust 함수 fn  (0) 2024.11.15
10. Rust 반복문  (0) 2024.11.15
9. Rust 조건부 판단  (0) 2024.11.15

관련글 더보기