Язык программирования С# является одним из самых современных на сегодняшний день. Создан группой ученых-инженеров компании Microsoft под руководством Андерса Хейлсберга. Применим для платформы Microsoft .NET. Это относительно молодой язык, первая версия которого появилась в 2002 году. Текущая C# 7.0 вышла в 2017 году.
Данный язык программирования является языком с С-подобным синтаксисом, имеющим довольно сдержанную типизацию, поддерживающим наследование, полиморфизм, перегрузку операторов, и другие функции и свойства.
Обновленный тип Tuple
Одно из важных улучшений языка программирования С# коснулось работы с кортежами типа Tuple. Раньше эти элементы не были столь популярны по ряду причин:
- масштабность и сложность конструкции;
- минимальная читабельность кода из-за стандартных, бессмысленных имен свойств Item.
Очень часто вместо Tuple формировался отдельный класс, что в значительной мере увеличивало массивность кода. В ряде случаев применяли выходные параметры out, но это делало сами способы неудобными для применения.
public Tuple<double, double> GetCoords()
{
// …
return new Tuple<double, double>(valueX, valueY);
}
С вводом в эксплуатацию С#7 все перечисленные проблемы самоустранились, а возможность расширились:
- теперь можно использовать сокращенную запись, указав в круглых скобках используемые типы при определении и значении при формировании Tuple;
- дополнительно существует возможность задавать собственные имена и использовать их в подсказках при выборе свойств.
public (double X, double Y) GetCoords()
{
// …
return (valueX, valueY);
}
Если сравнивать, то можно заметить, что при создании второго варианта не используется «new». Однако дополнительно становятся доступны:
- обратная совместимость;
- возможность использования деконструкции.
Обсуждения всех преимуществ обновленного типа Tuple вы можете найти в нашем блоге DevEducation и тоже высказать свое мнение или задать вопрос.
Кортежи могут передаваться в качестве параметров в метод, стать возвращаемыми элементами функций, использоваться другими способами. К примеру, одним из самых популярных вариантов считается возврат из функции нескольких значений, тогда как обычно можно вернуть только одно. Кортеж можно обозначить, как комбинацию элементов, находящихся в округлых скобках.
Главное отличие массивов от кортежей заключается в том, что последние могут соединять, аккумулировать объекты разных типов. Запрашивать каждый элемент кортежа можно посредством пол с наименованиями:
Item[поряд._номер_поля_в_кортеже]:
Console.WriteLine(tuple.Item1); // 5
Предусмотрено несколько разных обобщений класса Tuple для поддержания множества элементов (больше 8), включаемых в кортеж. Также можно использовать определение класса Tuple для 8 параметров, последний из которых именуется TRest. В нем и перемещается сам кортеж.
Также существует возможность именовать поля кортежа, к примеру:
- var tuple = (count:5, sum:10);
- Console.WriteLine(tuple.count); // 5
- onsole.WriteLine(tuple.sum); // 10.
Чтобы обратиться к каждому полю теперь нужно использовать имя, а не название.
Определение из Википедии: «Кортеж – упорядоченный набор фиксированной длины». Емкое и точное определение, абсолютно непонятное непосвященным.
В Википедии нет упоминания о том, что сам по себе кортеж – это структура времени компиляции. То есть, определенная сущность, объединяющая разрозненные объекты на этапе компиляции. Не выражено кортежи, по сути, используют во многих языках программирования. Это вы поймете, если зададитесь вопросом о том, как выучить язык программирования, и запишетесь на курсы программирования DevEducation для новичков и тех, кто хочет повысить свою квалификацию.
Некоторые из кортежей могут содержать только неизменяемые объекты, другие могут меняться. В число последних входят, к примеру, списки. Однако программисты Python активно обсуждают эту тему и большинство из них абсолютно уверены в том, что кортежи могут быть исключительно изменяемыми.
Основные свойства данных элементов заключаются в следующем:
- пользователь не имеет права вставлять в них сторонние детали;
- нельзя менять даже на аналогичные эти элементы;
- найти нужный сегмент в кортеже можно, но на процесс работы это нисколько не повлияет;
- для проверки присутствия того или иного элемента в кортеже рекомендуется использовать поисковой оператор in.
Классические опции с кортежами
- индекс любого начального элемента кортежа всегда применяется «0», его можно заключать в квадратные скобки;
- объединение направлено на формирование нового объекта, то есть, конкатенации два кортежа;
- перемножение подразумевает, что один и тот же кортеж перечисляется несколько раз;
- у кортежей нет методов append(), remove(), extend(), insert() или pop(), поскольку они неизменяемые, однако есть count() и len(), возвращающие число повторений и позиционирующее интерируемость элементов;
- кортежам присваивается несколько значений по очереди, что очень удобно для присвоения определенного количества переменных.
Основы взаимодействия с кортежами
Первый этап – создание. Как и другие коллекции языка Питон, кортежи создаются двумя способами: литерального объявления и с применением функции tuple(). Далее следует упаковка – присвоение кортежу определенной переменной. На этом этапе учитывают 2 основных момента:
- Выражения some_tuple = (11, 12, 13) и some_tuple = 11, 12, 13 являются аналогичными.
- Для объявления кортежа, в котором предусмотрен всего один элемент, необходимо использовать концевую запятую.
Далее идет распаковка, при которой определенным элементам кортежа присваиваются конкретные значения. Числовой параметр переменных должен соответствовать количеству элементов tuple.
Найти конкретный элемент и поиск в кортеже можно по номеру его позиции с начала или с конца. Если искомый элемент есть вложенный кортеж, то используются квадратные скобки. Отсортировать готовый кортеж можно при помощи функции sorted(). Если вы собираетесь удалить часть кортежа, сделать это невозможно, однако можно полностью его стереть при помощи оператора del.