Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Язык F# для чайников. arrow Язык F# для чайников. Урок 3. Списки и кортежи.
24.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Язык F# для чайников. Урок 3. Списки и кортежи. Печать E-mail
Автор megabax   
11.02.2013 г.
New Page 1

Язык F# для чайников. Урок 3. Списки и кортежи.

На прошлом уроке мы узнали, что в F# есть кортежи и списки. Теперь рассмотрим эти типы более подробно. И так, кортежи. Это пары, тройки или любое другое количество элементов одного или нескольких видов, например:

(1,2)

("один", "два", "три")

("один", 2, 3)

(a, b)

(a+1, b+2)

(3, "четыре", (5,6))

как, видим, могут быть так же и вложенные кортежи.

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

let (a,b)=(1,2)

System.Console.Write(a);

System.Console.Write(" ");

System.Console.WriteLine(b);

System.Console.Read();

Эта программа выдаст результат:

1 2

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

let (a,3)=(1,2)

System.Console.Write(a);

System.Console.Read();

произойдет исключительная ситуация:

Язык F# для чайников. Урок 3. Списки и кортежи.

Вместо переменной можно использовать знак "_", он означает пропуск переменной (в том случае если какое то значение кортежа не нужно присваивать). Вот пример такого синтаксиса:

let (a,_)=(1,2);

System.Console.Write(a);

System.Console.Read();

Для возврата первого элемента корежа используется функция fst, второго snd:

let a=fst(1,2);

let b=snd(1,2);

System.Console.Write(a);

System.Console.Write(" ");

System.Console.Write(b);

System.Console.Read();

Данная программа так же выдаст:

1 2

Для третьего, четвертного и так далее элементов подобной функции не предусмотрено. Но можно написать ее самим. См. пример:

let third (_, _, c) = c

let a=third(1,2,3);

System.Console.Write(a);

System.Console.Read();

Данная программа выдаст

3

И так,  я рассказал вам о кортежах. Теперь перейдем к спискам. Как вы уже знаете из прошлого урока, в отличии от кортежей, списки берутся не в круглые, а в квадратные скобки. Разумеется, это не единственное отличие. Иначе смысл вводить другой тип?  Начнем с того, что список можно задать вот такой конструкцией:

let a=[1..10];

которая сформирует список из 10 элементов от 1 до 10. Проиллюстрируем это вот на таком примере:

let a=[1..10];

System.Console.WriteLine(a);

for i in a do System.Console.Write(i.ToString()+" ");

System.Console.Read();

который выведет вот такой результат:

Язык F# для чайников. Урок 3. Списки и кортежи.

Разумеется, если мы напишем, например, вот такую конструкцию:

let a=[3..15];

то будет создан список с элементами от 3 до 15.

С кортежами у нас такой номер не пройдет. Это более простой тип, чем списки.

Можно создать списки и таким вот образом (при помощи цикла):

let seq1 = seq { for i in 1 .. 10 -> (i, i*i) }

for (a, asqr) in seq1 do

  printfn "%d squared is %d" a asqr

System.Console.Read();

Вот что выдаст программа:

Язык F# для чайников. Урок 3. Списки и кортежи.

Но это только программа. А вот так можно построить список:

let seq1 = seq [ for i in 1 .. 10 -> (i, i*i) ]

System.Console.WriteLine(seq1);

System.Console.Read();

И вот какой будет результат на этот раз:

Язык F# для чайников. Урок 3. Списки и кортежи.

И так, думаю, вы почувствовали разницу между кортежами и списками. Но эта тема еще не закончена, в будущем мы изучим списки и выражение for .. in .. более подробно.

Последнее обновление ( 11.02.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги