Típus következtetés

A típus következtetés olyan mechanizmus, amely lehetővé teszi, hogy a fordító vagy tolmács automatikusan megkeresi a fajta kapcsolódó kifejezések, anélkül, hogy kifejezetten említi a forráskódot .

A fordító vagy az értelmező feladata megtalálni a kifejezés általánosan alkalmazható típust. Ennek a mechanizmusnak számos előnye van: a forráskód légiesebb, a fejlesztőnek nem kell aggódnia a típusnevek megjegyzése miatt, az tolmács eszközt biztosít a fejlesztő számára, hogy ellenőrizze (részben) azt a kódot, amelyet írt és a program alig módosul az adatszerkezet változása esetén. A kifejezéseket a lehető legáltalánosabban tartják - a típus következtetése együtt jár a polimorfizmussal , mivel a fordító szükség szerint absztrakt típusokat generál . Végül a fordító rendelkezik minden típusú információval, erőteljes és statikus gépeléssel rendelkezik, amely lehetővé teszi, hogy biztonságosabb és hatékonyabb kódot állítson elő.

A típus következtetési mechanizmus bizonyos funkcionális programozási nyelvekben jelen van .

Példa

Az OCaml egy példa olyan nyelvre, amely a típus következtetését használja:

let rec longueur = function | [] -> 0 | h::t -> 1 + (longueur t);;

A bemutatott kód azt mutatja, hogy ez egy olyan függvény, amely bármely listát bevisz (üres vagy nem), és amely egész számot ad vissza. Valójában ez a funkció lehetővé teszi a lista hosszának kiszámítását . Amikor ezt a kóddarabot elküldik a tolmácsnak, a tolmács így válaszol:

longueur : 'a list -> int = <fun>

Caml tehát azt jelzi, hogy felismeri, hogy a hosszúságfüggvény bemenetként valami olyasmit vesz fel, mint egy 'lista' , vagyis bármilyen listát (egész számok, valós számok, karakterláncok stb.). Caml azt is felismeri, hogy a függvény egész számot ( int ) ad vissza .

A C # egy másik példa arra a nyelvre, amely a típus következtetését használja.

var name = "James Bond"; var age = 25; var isSecret = true; var r = 2.52; Type nameType = name.GetType(); Type ageType = age.GetType(); Type isSecretType = isSecret.GetType(); Type rType = r.GetType(); Console.WriteLine("name is type : " + nameType.ToString()); Console.WriteLine("age is type : " + ageType.ToString()); Console.WriteLine("isSecret is type : " + isSecretType.ToString()); Console.WriteLine("r is type : " + rType.ToString());

Példák nyelvekre a típus következtetés alapján

Hivatkozások

  1. (a) Típuskövetkeztetés  " , a Java ™ oktatóanyagok , az Oracle Java dokumentációja .