Тема: Яка різниця між type і var (Pascal)?
Яка різниця між type і var (Pascal) і для чого взалі type, якщо все можна описувати у var?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Яка різниця між type і var (Pascal)?
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Яка різниця між type і var (Pascal) і для чого взалі type, якщо все можна описувати у var?
Я читав. Все одно не розумію
Що саме не зрозуміло?
Для чого type коли все можна описати у var?
Скорочення тексту програми, ви про це не замислювалися, але якби ви працювали з довгими вкладеними записами, то таких питань би не виникало. До того ж не впевнений що все що дозволяється в якості типу локальної змінної так само з аргументами хвункцій.
Є декілька причин використання type:
У var можна вписати далеко не все.
В десятьох місцях зручніше написати "TMyMatrix" замість "array [1 .. 25, 1 .. 12] of Integer".
Код має бути самодокументованим, тобто з назв змінних та типів має бути зрозуміло що вони роблять. Наприклад я міг би написати так: "var a: integer", але міг би й так: "type TCentimeter = Integer; var CatechLength: TCentimeter". Який варіант зрозуміліший?
type оголошує імена типів, а var - імена змінних
Яка різниця між type і var (Pascal) і для чого взалі type, якщо все можна описувати у var?
Є випадки, коли оголошувати тип у секції type необхідно. Це стосується, в першу чергу, ситуацій, коли в нас є декілька змінних одного похідного типу, між якими відбувається присвоєння чи деякі інші операції. Приклад:
(* Ця програма не скомпілюється *)
var a:array[1..3]of real;
procedure f(var b:array[1..3]of real);
begin end;
begin
f(a); (* a та b оголошені ідентично, але вважаються різнотипними, тому такий виклик спричинить помилку*)
end.
(* А ця програма скомпілюється *)
type ta=array[1..3]of real;
var a:ta;
procedure f(var b:ta);
begin end;
begin
f(a); (* a та b вважаються однотипними *)
end.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися