Информация об изменениях

Сообщение Re[31]: Java vs C# vs C++ от 03.10.2015 20:39

Изменено 03.10.2015 20:42 Evgeny.Panasyuk

Здравствуйте, Serginio1, Вы писали:

EP>>Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:

EP>>
EP>>Dynamic x = ...;

EP>>x.call("method", a1, a2, ...);
EP>>// or
EP>>x("method", a1, a2, ...);
EP>>// or
EP>>x > "method"_(a1, a2, ...);
EP>>
А если заранее описать список возможных имён методов, то можно и так:

EP>>
EP>>x.method(a1, a2, ...)
EP>>

S> Но согласись все равно убожество. Читать такой код неудобно.

Немного непривычно — да, возможно. Но не убожество точно. Тем более перечислив имена один раз получаем x.method(a1, a2, ...)
Да и ты разве про это изначально говорил?

S>На C# Сделать прокси легко. Вот например как обернуть в Idispatch любой объект .Net

S>http://infostart.ru/public/238584/

Использовать C++ из Python/Java/C# тоже легко — смотри SWIG.

S> Кстати про инлайн

S>http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
S>http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/

Инлайнинг обычного вызова не особо интересно. Покажи инлайнинг например для замыкания внутри ФВП.
Re[31]: Java vs C# vs C++
Здравствуйте, Serginio1, Вы писали:

EP>>Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:

EP>>
EP>>Dynamic x = ...;

EP>>x.call("method", a1, a2, ...);
EP>>// or
EP>>x("method", a1, a2, ...);
EP>>// or
EP>>x > "method"_(a1, a2, ...);
EP>>
А если заранее описать список возможных имён методов, то можно и так:

EP>>
EP>>x.method(a1, a2, ...)
EP>>

S> Но согласись все равно убожество. Читать такой код неудобно.

Немного непривычно — да, возможно. Но не убожество точно. Тем более перечислив имена один раз получаем x.method(a1, a2, ...)
Да и ты разве про это изначально говорил?

S>На C# Сделать прокси легко. Вот например как обернуть в Idispatch любой объект .Net

S>http://infostart.ru/public/238584/

Использовать C++ из Python/Java/C# тоже легко — смотри SWIG. Или например Boost.Python.

S> Кстати про инлайн

S>http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
S>http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/

Инлайнинг обычного вызова не особо интересно. Покажи инлайнинг например для замыкания внутри ФВП.