type versus data type rubrika: Programování: Jiné

2 Andreaw Fean
položil/-a 7.2.2017

Ahoj.

Při čtení https://en.wikipedia.org/wiki/First-class_citizen jsem narazil na rozlišení "first-class type" a "first-class data type". Nic moc jsem o tom dál nedočetl. Můžete mi vysvětlit jaký je v tom rozdíl? A jaký je vlastně rozdíl mezi "type" versus "data type"?

Díky.

odkaz
9 Taco
odpověděl/-a 7.2.2017

String, Integer, Enum, List je datový typ - protože obsahuje nějakou hodnotu.

Stringable, Enumerate, Countable je obecný typ, protože sám o sobě nenese datovou informaci. V případě toho, co známe u Javy, C# jako rozhraní je to jen nálepka pomáhající typovému systému dodržet záruky. Třeba dostupnost funkcí/metod pro nějaký datový typ.

(Ale taky v tom trochu plavu.)

First-class type pak znamená, zda je možné s těmi manipulovat jako s hodnotami (zjednodušeně). Třeba kdyby šlo u Pythonu toto (něco jde, něco je jen popis; Python stejně typy nemá):

def select_type(session):
  if session = ...:
    return Int
  else:
    return Float
 
def create_object(session):
  t = select_type(session)
  klass = class MyClass(t):
    def __init__(self, a, b):
      ...
 
cls = create_object(session)
m = cls(1, 2)

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.