В чем разница между кортежами и массивами в ржавчине? - PullRequest
0 голосов
/ 20 октября 2018

Единственная реальная разница, которую я могу понять после прочтения руководства для начинающих, состоит в том, что в кортеже вы можете иметь значения нескольких типов?Оба неизменны?

И в каких случаях я бы хотел использовать кортеж или массив, кроме очевидного.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Массив - это список элементов однородного типа.Вы можете перебирать его и индексировать или нарезать его динамическими индексами.Его следует использовать для домогенных коллекций элементов, которые играют ту же роль в коде.В общем случае вы будете перебирать массив хотя бы один раз в своем коде.

Кортеж - это агломерация фиксированной длины разнородных элементов.Его следует рассматривать как struct с анонимными полями.Поля обычно имеют различное значение в коде, и вы не можете перебирать его.

0 голосов
/ 20 октября 2018

Массив

  • коллекция значений одного типа
  • коллекция фиксированного размера

Доступ к элементу

Вы можете получить доступэлемент массива по имени массива, квадратным скобкам и индексу, например:

let arr = [22, 433, 55];
assert_eq!(arr[0], 22);

Разрушающий массив

Массивы могут быть разбиты на несколько переменных, например:

let arr = [1, 42 ,309];
let [id, code, set] = arr;

assert_eq!(id, 1);
assert_eq!(code, 42);
assert_eq!(set, 309);

Tuple

  • коллекция значений различных типов
  • конечная гетерогенная последовательность

Доступ к элементу

Вы можете получить доступ к элементу кортежа с помощьюимя, точка и индекс кортежа, например:

let tup = (22, "str", 55);
assert_eq!(tup.0, 22);

Функции

Кортежи могут использоваться для возврата нескольких значений из функций, например:

fn num(i: u32) -> (i64, u32) {
    (-33, 33 + i)
}

assert_eq!(num(12), (-33, 45));

Уничтожение кортежей

Кортежи также могут быть уничтожены, и более распространенной практикой является уничтожение кортежей, а не массивов, например:

let tup = (212, "Wow", 55);
let (num, word, id) = tup;

assert_eq!(num, 212);
assert_eq!(word, "Wow");
assert_eq!(id, 55);

Полезные ресурсы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...