История изменений
Исправление 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 делегаты, содержащие больше одного указателя на метод.
Исправление 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 делегаты, содержащие больше одного указателя на метод.
Исходная версия 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 делегаты, содержащие больше одного указателя на метод.