![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Как минимум, такого:
Пишем функцию с двумя(или одним) параметрами. Первый параметр - объект, второй - его метод. Если параметр один - то это кортеж содеращий в себе объект и метод.
Вызываем с произвольным объектом и его методом. Функция выполняет метод, и возвращает его результат в виде строки, а если валится исключение, то возвращает строку, описывающую исключение.
И все это для того, чтобы было проще писать логи в логи всякие характеристики объектов, в том числе и тогда, когда объект==null :)
Можно было бы еще возвращать из функции что-то вроде Either, где Left - это результат метода, а Right - описание исключения.
Но нам, энтерпрайзным быдлокодерам функциональное программирование не положено, поэтому "пишите на чем есть, мойша иванович, и не выпендривайтесь".
Пишем функцию с двумя(или одним) параметрами. Первый параметр - объект, второй - его метод. Если параметр один - то это кортеж содеращий в себе объект и метод.
Вызываем с произвольным объектом и его методом. Функция выполняет метод, и возвращает его результат в виде строки, а если валится исключение, то возвращает строку, описывающую исключение.
И все это для того, чтобы было проще писать логи в логи всякие характеристики объектов, в том числе и тогда, когда объект==null :)
Можно было бы еще возвращать из функции что-то вроде Either, где Left - это результат метода, а Right - описание исключения.
Но нам, энтерпрайзным быдлокодерам функциональное программирование не положено, поэтому "пишите на чем есть, мойша иванович, и не выпендривайтесь".
no subject
Date: 2008-11-30 02:57 pm (UTC)no subject
Date: 2008-11-30 03:06 pm (UTC)no subject
Date: 2008-11-30 05:05 pm (UTC)no subject
Date: 2008-11-30 05:06 pm (UTC)no subject
Date: 2008-11-30 09:10 pm (UTC)no subject
Date: 2008-11-30 08:47 pm (UTC)no subject
Date: 2008-12-01 03:48 am (UTC)ну кроме того, что при неизвестном прототипе, неясно, с какими параметрами вызывать метод(хотя как это решается в функциональном - тоже слабо представляю)
no subject
Date: 2008-12-01 06:56 am (UTC)Комбинация функции и метода просто даст функцию с типом, зависящим от типа объекта и метода.
no subject
Date: 2008-12-01 08:24 am (UTC)"Функция выполняет метод, и возвращает его результат в виде строки"
С какими аргументами твоя функция предполагает вызывать метод? и как она предполагает угадывать эти параметры?
no subject
Date: 2008-12-01 08:32 am (UTC)Например тот же самый долбаный ToString() в .net - его можно было бы заменить методом который сначала проверяет объект на !=null а затем уже вызывает.
В общем-то, в 3.5 .NET такое уже есть, extension methods, но пока на него не перейдешь, юзера задолбуться деплоить.
no subject
Date: 2008-12-02 04:16 am (UTC)есть какой-то объект MyObject. у него метод function multiply(a,b: integer): integer; который возвращает результат умножения своих аргументов.
Мы отдаем их в суперфункцию: SuperFunc(MyObject, myltiply), которая должна в ответ вернуть строку с результатом.
Я по прежнему не могу понять, откуда берет SuperFunc значения для a и b...
no subject
Date: 2008-12-02 09:50 am (UTC)А если передать Multiply, то функция вернет функцию у которой будет два входных параметра и один выходной.
no subject
Date: 2008-12-02 12:56 pm (UTC)спасибо )
no subject
Date: 2008-12-01 06:29 am (UTC)no subject
Date: 2008-12-01 08:57 am (UTC)то что нужно?
no subject
Date: 2008-12-01 09:00 am (UTC)no subject
Date: 2009-01-09 09:12 pm (UTC)no subject
Date: 2009-01-09 09:12 pm (UTC)no subject
Date: 2009-01-10 08:11 am (UTC)no subject
Date: 2009-01-10 10:13 am (UTC)В другой стороны - Qt выглядит интересной альтернативой (GUI, SQL, Model-View-Controller). А python + pyqt - ещё более интересной. Но DataGrid из коробки (в понимании дотНета по крайней мере) там нету (на мой взгляд). Сделать-то (поминая задачку про адресную книгу) несложно, но разово такого сорта вещи сделать надо будет.
С другой стороны - у любой компании всегда есть накопленная библиотека собственноручно написанных компонент, да и в интернете Qtшные компоненты попадаются.
И даже в QtDesigner их можно проинтегрировать (если есть желание)...
В общем... Резюмируя: Qt является достойным конкурентом Delphi, Java, .NET. Юзать её можно в C++, Python, Java, Haskell даже кажется - это вполне разумная интеграция _хорошей_ библиотеки, иначе бы народ не парился на этот счёт.
Минусы - это лицензия Qt, покупать для закрытого софта надо.
В общем... Решайте сами =)
З.Ы.: Питон обусцируется легко, но не легче дотНета, с другой стороны на целевой машине сорцы нужны чтобы *.pyc собрать. Однако никто не мешает написать миниатюрный рантайм, что будет расшифорвать сорцы, компилять, и складывать на диск результаты компиляции, а сами сорцы держать зашифрованными.