|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
Вот в дотнете есть куча определений уже готовых делегатов, типа семейства типов Func. Я хочу написать функцию, которая итеративно применяется для последовательности значений, причём на вход получает значение из этой последовательности и некую константу, а возвращает результат вычислений. Для такой цели подойдёт тип делегата Func<T1, T2, TResult>. Один минус - этот тип определяется так Код: c# 1. 2. 3.
Т. е. с ничего не говорящими названиями аргументов. А мне надо, чтобы аргументы назывались так, как мне хочется. Например, value и constant. Я могу объявить свой тип делегата, но получается, что только из-за того, что мне каждый раз нужны свои названия аргументов, я должен постоянно объявлять типы делегатов, имеющих одну сигнатуру. Можно это как-то обойти? Скажем, назначать названия аргументам при создании делегата. Я создаю делегат, например, так: Код: c# 1.
Но вот этих названий - value и constant - тот, кто вызывает этот делегат, не видит. Он видит arg1 и arg2, причём без комментариев, что какой аргумент означает. А я хочу, чтобы можно было свои названия делать и комментарии к ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 14:45 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320, не совсем понятно чего хочешь добиться если метод известен то и напиши его: Код: c# 1. 2. 3. 4.
если нет то причём тут названия аргументов? ЗЫ код не компилится Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 15:48 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
pationЗЫ код не компилится Код: c# 1.
Надо так Func<double, double, double> _calc = (value, constant) => value / constant; ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 15:50 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320 А я хочу, чтобы можно было свои названия делать и комментарии к ним. тогда user7320должен постоянно объявлять типы делегатов чудес не будет. _calc = (v, c) => v / c; и что бедной среде делать показывать? что окажется в _calc только при исполнении известно станет ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 15:52 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320Я хочу написать функцию, которая итеративно применяется для последовательности значений, причём на вход получает значение из этой последовательности и некую константу, а возвращает результат вычислений. LINQ, Aggregate ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 15:52 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 15:56 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
pationuser7320, не совсем понятно чего хочешь добиться если метод известен то и напиши его: Код: c# 1. 2. 3. 4.
если нет то причём тут названия аргументов? Тогда так. Немного другой контекст - без константы. Имеем расширяющий метод, принимающий экземпляр делегата и работающий с двумя смежными значениями из последовательности: Код: c# 1. 2. 3. 4.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Как дать понять, что в Код: c# 1.
первый параметр - это previous (предыдущий элемент, смежный слева), а второй - это current (текущий элемент, смежный справа)? Вот вызываю я этот метод для последовательности, и в качестве параметра мне подсвечивается Код: c# 1.
И если вы передадите в качестве параметра метод Код: c# 1. 2. 3. 4.
то будет один результат, а если метод Код: c# 1. 2. 3. 4.
то будет другой результат - из-за того, что в этом случае важен порядок передачи параметров в метод. Тут нало либо писать свой тип делегата, где будут аргументы именованы как мне надо, или что? Если свой тип делегата, то он будет по сигнатуре повторять уже объявленные Func<TSource, TSource, TResult>. Это нормально? Может, есть способ пояснить назначение аргументов для уже объявленных типов делегатов, типа Func<TSource, TSource, TResult>? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 16:17 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320то будет другой результат - из-за того, что в этом случае важен порядок передачи параметров в метод. ...потому что в моём расширяющем методе параметры в метод передаются в определённом порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 16:22 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
Вобщем, подписал к комментариям к этому расширяющему методу, какие параметры у его аргумента projection что должны означать. Ну или свой тип делегата с нужными мне именованием параметров городить. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 16:39 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320первый параметр - это previous (предыдущий элемент, смежный слева), а второй - это current (текущий элемент, смежный справа)? для этого комментарии есть ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 17:21 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320, название аргументов могут быть совершенно любыми, идентификация идёт не по имени , а по сигнатуре. то есть по типам и порядку следования этих аргументов ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2014, 08:36 |
|
Как дать осмысленные имена аргументам встроенных делегатов или зачем нужны Func и т. п.
|
|||
---|---|---|---|
#18+
user7320, Радуйся что хоть так :) В F# например вообще такие конструкции Код: c# 1.
из которых он сам выводит типы в том числе и функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 13:43 |
|
|
start [/forum/search_topic.php?author=Navat&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 488ms |
total: | 664ms |
0 / 0 |