|
28.12.2020, 23:27 | #1 |
Участник
|
Эммм... Макс, если честно, то я совсем запутался. А раскручиывать цепочку цитат и контр-вопросов совсем нет никакого желания.
Но совершенно очевидно, что у тебя есть особое мнение по этому поводу. Также несомненно, что я могу дико ошибаться. вот исходный вопрос: Цитата:
Чтобы было полезно и познавательно читателям аксфорума можешь (без оглядки на мои ответы) сформулировать в одном посте: 1. что можно сделать с подобными тренарными операторами в ax2012? (примеры рассыпаны выше по ветке) 2. почему и зачем это возникло в ax2012 на твой взгляд? понятно, что для совместимости в CIL. А в CIL это зачем и почему раньше этого в X++ не было? 3. какова ситуация с тренарными операторами в D365FO и почему так случилось? 4. а также любые твои мысли на тему ветки - будет интересно. Последний раз редактировалось mazzy; 28.12.2020 в 23:36. |
|
29.12.2020, 07:27 | #2 |
Участник
|
Тернарными операторами.
Прошу прощения что поправляю.
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
29.12.2020, 09:47 | #3 |
Участник
|
Цитата:
class MyClass { MyClass test(){ return null } } class MyExtendedClass extends MyClass { SysAnyType test(){ return null } } Цитата:
1. что можно сделать с подобными тренарными операторами в ax2012? (примеры рассыпаны выше по ветке)
Цитата:
2. почему и зачем это возникло в ax2012 на твой взгляд? понятно, что для совместимости в CIL.
Цитата:
А в CIL это зачем и почему раньше этого в X++ не было?
В X++ до 2012 нет гарантии, что если ты вызвал метод x на переменной типа y ты вызовется именно метод класса y. В переменной может лежать объект любого класса и, если у него есть метод x то вызовется он. А если нет, то будет исключение. Причем не когда возникает несовместимое присваивание, а когда вызов, что может быть гораздо позже и труднее искать основную причину ошибки. Цитата:
3. какова ситуация с тренарными операторами в D365FO и почему так случилось?
Warning 'as' is obsolete: '"Use the AS operator instead."' Цитата:
4. а также любые твои мысли на тему ветки - будет интересно.
Потом решили приделать CIL и привести в соответствие типизацию компилятора и рантайма. Чтобы раньше получать сообщения об ошибках. С тернарным оператором что-то не так - я думаю какая-то ошибка или недоделка в выводе типов. В Dyn365FO компилятор переписали на C# (Вернее, доделали XLNT, который занимался раньше просто дополнительными проверками) и эту недоделку устранили, насколько я вижу. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
02.01.2021, 18:08 | #4 |
Участник
|
Цитата:
Т.е. типы в методах потомках не проверяются на хоть какое-нибудь соответствие типам родителей. Типы проверяются только при присваивании (явном или неявном). Убедил. |
|
|
За это сообщение автора поблагодарили: belugin (5). |
29.12.2020, 09:48 | #5 |
Участник
|
Цитата:
Сообщение от mazzy
Чтобы было полезно и познавательно читателям аксфорума
можешь (без оглядки на мои ответы) сформулировать в одном посте: 1. что можно сделать с подобными тернарными операторами в ax2012? (примеры рассыпаны выше по ветке) 2. почему и зачем это возникло в ax2012 на твой взгляд? понятно, что для совместимости в CIL. А в CIL это зачем и почему раньше этого в X++ не было? 3. какова ситуация с тернарными операторами в D365FO и почему так случилось? 4. а также любые твои мысли на тему ветки - будет интересно. Как-то мало кто прореагировал. Вопросы интересные и нужные на практике. |
|
Теги |
ax2012, ax2012r3, тернарный оператор |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|