LINUX.ORG.RU

История изменений

Исправление tp_for_my_bunghole, (текущая версия) :

В D избавились и без всей этой твоей паскалятины.

В Dlang добавили паскалятины, как во все новые императивные языки.
Но сохранили синтаксические особенности C.

Например в D функцию без параметров можно вызывать без скобок:

fun; // вызов функции

Это не позволяет использовать имя функции в качестве указателя, что бы передавать как callback в другие функции.
Вместо этого используются delegate, структура из указателя на функцию и указателя на объект с которым работает эта функция(метод объекта по сути, который можно передавать).
Это есть в C#(одно из продолжений развития Pascal, но для маркетинга Microsoft оставилa брэндинг C), и в Dlang.
А сама идея, её развитие скорее из Oberon, type bound functions, функции привязанные к типам(объектам).
Во FreePascal и Delphi это есть очень давно, после функции указывается «of object».

type TOneArg = Procedure (Var X : integer) of object; 
var  
  oproc : TOneArg;

// пусть M какой экземпляр какогo-то класса
oproc:=@M.DoX;

В C# есть multicast делегаты, содержащие больше одного указателя на метод.

http://www.youtube.com/watch?v=expCgeQXqzA

Исправление tp_for_my_bunghole, :

В D избавились и без всей этой твоей паскалятины.

В Dlang добавили паскалятины, как во все новые императивные языки.
Но сохранили синтаксические особенности C.

Например в D функцию без параметров можно вызывать без скобок:

fun; // вызов функции

Это не позволяет использовать имя функции в качестве указателя, что бы передавать как callback в другие функции.
Вместо этого используются delegate, структура из указателя на функцию и указателя на объект с которым работает эта функция(метод объекта по сути, который можно передавать).
Это есть в C#(одно из продолжений развития Pascal, но для маркетинга Microsoft оставилa брэндинг C), и в Dlang.
А сама идея, её развитие скорее из Oberon, type bound functions, функции привязанные к типам(объектам).
Во FreePascal и Delphi это есть очень давно, после функции указывается «of object».

type TOneArg = Procedure (Var X : integer) of object; 
var  
  oproc : TOneArg;

// пусть M какой экземпляр какогo-то класса
oproc:=@M.DoX;

Это делегаты вo FreePascal и Delphi, давно. В C# есть multicast делегаты, содержащие больше одного указателя на метод.

http://www.youtube.com/watch?v=expCgeQXqzA

Исходная версия tp_for_my_bunghole, :

В D избавились и без всей этой твоей паскалятины.

В Dlang добавили паскалятины, как во все новые императивные языки.
Но сохранили синтаксические особенности C.

Например в D функцию без параметров можно вызывать без скобок:

fun; // вызов функции

Это не позволяет использовать имя функции в качестве указателя, что бы передавать как callback в другие функции.
Вместо этого используются delegate, структура из указателя на функцию и указателя на объект с которым работает эта функция(метод объекта по сути, который можно передавать).
Это есть в C#(одно из продолжений развития Pascal, но для маркетинга Microsoft оставил брэндинг C), и в Dlang.
А сама идея из Oberon, type bound functions, функции привязанные к типам(объектам).
Во FreePascal и Delphi это есть очень давно, после функции указывается «of object».

type TOneArg = Procedure (Var X : integer) of object; 
var  
  oproc : TOneArg;

// пусть M какой экземпляр какогo-то класса
oproc:=@M.DoX;

Это делегаты вo FreePascal и Delphi, давно. В C# есть multicast делегаты, содержащие больше одного указателя на метод.

http://www.youtube.com/watch?v=expCgeQXqzA