|
11.12.2007, 16:37 | #1 |
Moderator
|
Вернуть this из класса
(С маленькой надеждой в голосе) Может кто-нибудь знает красивый способ вернуть экземпляр класса (this) из метода этого же экземпляра класса?
То есть вместо такого: X++: var.parm1(...); var.parm2(...); var.parm3(...); var.parm4(...); var.doIt(); X++: var.parm1(...).parm2(...).parm3(...).parm4(...).doIt(); |
|
11.12.2007, 16:41 | #2 |
Участник
|
Цитата:
X++: class Smth { } Smth parm(...) { // ... return this; } |
|
11.12.2007, 16:43 | #3 |
Moderator
|
Если бы все было так просто - не спрашивал.
Ругается на return this; В декларации метода в качестве возвращаемого типа указан сам класс. |
|
11.12.2007, 16:47 | #4 |
Moderator
|
Аааа.....сорри, прошу прощения.
Это косяки местного приложения. |
|
11.12.2007, 16:47 | #5 |
Участник
|
Странно, у меня не ругается. Проверил - работает на AX3 SP1
|
|
11.12.2007, 17:11 | #6 |
Участник
|
Белугин так реализовывал QueryBuilder - методы которые обычно находятся на QueryBuildDataSource возвращали его же, что позволяло вызывать несколько методов подряд на том же queryBuildDataSource.
|
|
11.12.2007, 17:15 | #7 |
Moderator
|
Хм... а я сделал оболочку над Args().
|
|
11.12.2007, 17:20 | #8 |
Moderator
|
То есть, вместо подобного:
X++: Args args; ; args = new Args(); args.name(formStr(reportURLedgerTurnoverSetup)); args.parmEnumType(enumnum(reportUReportType)); args.parmEnum(reportUserReport.ReportType); args.parm(reportUserReport.ReportName); formRun = classFactory.formRunClass(args); X++: formRun = new my_Args().name(formStr(reportURLedgerTurnoverSetup)) .parmEnumType(enumnum(reportUReportType)) .parmEnum(reportUserReport.ReportType) .parm(reportUserReport.ReportName) .formRun(); |
|
11.12.2007, 22:54 | #9 |
Участник
|
За что любил, люблю и буду любить Axapt-у, за то что есть хоть какие-то правила групповой разработки. За то что прежде чем написать что-то программисты писавшие её думали, а какого этим будет пользоваться другим, как это код будет читаться. Вам то может превычней. Потому что натация короче. А какого просматривать код, тем кто после прийдёт?
Осуждать не люблю просто прошу задуматься хоть на секунду, стоит ли ломать такие привычные вещи, как ввод параметров в класс Args. Тем более опыта то у вас намного больше. Но честно лучше уж такие превычные вещи оставлять такими какие они есть. |
|
12.12.2007, 07:49 | #10 |
Участник
|
Цитата:
Сообщение от miklenew
За что любил, люблю и буду любить Axapt-у, за то что есть хоть какие-то правила групповой разработки. За то что прежде чем написать что-то программисты писавшие её думали, а какого этим будет пользоваться другим, как это код будет читаться. Вам то может превычней. Потому что натация короче. А какого просматривать код, тем кто после прийдёт?
Осуждать не люблю просто прошу задуматься хоть на секунду, стоит ли ломать такие привычные вещи, как ввод параметров в класс Args. Тем более опыта то у вас намного больше. Но честно лучше уж такие превычные вещи оставлять такими какие они есть.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
12.12.2007, 10:18 | #11 |
Moderator
|
Цитата:
За что любил, люблю и буду любить Axapt-у, за то что есть хоть какие-то правила групповой разработки.
В Аксапте, кстати, с правилами разработки довольно плохо. На мой взгляд, среда (или инструменты) разраблотки должны поддерживать автоматическую валидацию правил разработки, иначе контроль за их соблюдением превышает преимущества их выполнения. Цитата:
За то что прежде чем написать что-то программисты писавшие её думали, а какого этим будет пользоваться другим, как это код будет читаться.
Цитата:
Вам то может превычней. Потому что натация короче.
|
|
12.12.2007, 10:42 | #12 |
Участник
|
|
|
12.12.2007, 15:16 | #13 |
Участник
|
Цитата:
Сообщение от miklenew
Вам то может превычней. Потому что натация короче.
Цитата:
В лучшем случае, у Вас ничего не получится. В худшем, Вы получите пародоксальное (не предсказуемое) поведение Axapta. Каждая среда программирования имеет свою собственную идеологию. Следствием которой и является используемый синтаксис языка и интерфейс приложений. И в чужой монастырь со своим уставом лучше не лезть. Ведь и побить могут |
|
13.12.2007, 17:37 | #14 |
NavAx
|
Цитата:
1) Сами функциональщики признают, что их стиль написания часто делает программы нечитабельными. К примеру, не сложно написать полноценный интерпретатор в одну строку. Прочитать сложнее. 2) Сама суть функционального стиля заключена в рекурсии. В Axapta есть технологическое ограничение на число вложенных вызовов, т.е. использование рекурсии невозможно 3) Основные причины возобновления интереса к функциональным языкам это: - удобство работы с текстами - практически идеальное распараллеливание вычислений - дешевая оперативная память, позволяющая полностью "развернуть" граф и т.о. получить хорошую скорость работы Для axapta ни один из этих критериев не применим 4) Очень тяжело дебажить такой код
__________________
Isn't it nice when things just work? |
|
12.12.2007, 10:26 | #15 |
Moderator
|
Цитата:
Только все как писали, так и будут писать. (Т.е. что бы самим было удобно)
|
|
12.12.2007, 10:45 | #16 |
Moderator
|
Цитата:
Ну есть Best Practice Check - правда тормозной....
Кстати, а где можно посмотреть QueryBuilder? |
|
12.12.2007, 10:48 | #17 |
Участник
|
что за QueryBuilder?
|
|
12.12.2007, 10:50 | #18 |
Moderator
|
Цитата:
kashperuk: Белугин так реализовывал QueryBuilder - методы которые обычно находятся на QueryBuildDataSource возвращали его же, что позволяло вызывать несколько методов подряд на том же queryBuildDataSource.
|
|
12.12.2007, 10:58 | #20 |
Участник
|
Ктати Best Practice Check - расширяемая штука
|
|