AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2015, 18:21   #21  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Добавил комментарий к статье MSDN, 1:0 в пользу Нео
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: macklakov (2), Logger (3), S.Kuskov (2).
Старый 03.12.2015, 19:42   #22  
A_BAS is offline
A_BAS
Участник
Аватар для A_BAS
 
77 / 48 (2) +++
Регистрация: 19.04.2012
Вангую:
в АХ7 появятся сообщения BP "Ключевое слово anyType более не используется. Используйте ключевое слово var".

имхо практической необходимости применения var нет
лучше бы добавили поддержку foreach. полезнее было бы
Старый 03.12.2015, 20:28   #23  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от A_BAS Посмотреть сообщение
Вангую:
в АХ7 появятся сообщения BP "Ключевое слово anyType более не используется. Используйте ключевое слово var"
Нет такого предупреждения. Прочитайте про var в C#, чтобы понять разницу. При помощи var можно объявить переменную типа AnyType или типа SalesOrder любого другого типа. Сама переменная будет именно того типа, которого обявили:

X++:
// тип sales order tabke
var salesOrder = SalesOrderTable::find(..)
// ошибка компиляции
salesOrder = InventTrans::find(...)

// тип x - AnyType
var x = myMap.lookup(sss);
// нет ошибки компиляции
x = InventTrans::find(...)

Последний раз редактировалось belugin; 03.12.2015 в 20:32.
За это сообщение автора поблагодарили: mazzy (2), S.Kuskov (2), A_BAS (2).
Старый 03.12.2015, 20:43   #24  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от belugin Посмотреть сообщение
Нет такого предупреждения. Прочитайте про var в C#, чтобы понять разницу. При помощи var можно объявить переменную типа AnyType или типа SalesOrder любого другого типа. Сама переменная будет именно того типа, которого обявили:
А какая от этого практическая польза ?
Сделать X++ похожим на JS c вакханалией типов и отсутствие каких-либо проверок на этапе компиляции ?
От этого один вред.
За это сообщение автора поблагодарили: AP-1055D (1).
Старый 03.12.2015, 21:29   #25  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Ну, mfp же написал, что три недели будет знакомить с новым-неизведанным)
Так что, может, дальше будет и расписано, зачем же неявная типизация в Аксапте понадобилась

Глядишь, и анонимные типы появились.
А там уже и рукой подать до встроенного linq'а)

Если что - с семеркой дел не имел, так, фантазирую))
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (2).
Старый 03.12.2015, 21:38   #26  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
А какая от этого практическая польза ? Сделать X++ похожим на JS c вакханалией типов и отсутствие каких-либо проверок на этапе компиляции ?
По-моему, просто так удобней сишарперам, которых нагнали толпой на разработку стандартного приложения: они до этого Х++ в глаза не видели и выражают своё "фи" его ограничениям, потому что им подавай var и лямбда-функции, а тут переменные заставляют заранее объявлять, да еще и точный тип вручную указывать. Про перекрестные ссылки в Аксапте они тоже не слышали, и как эти перекрестные ссылки будут работать со всякими там var, их не волнует. Скоро большая часть перекрестных ссылок будет относиться к Common и Object
За это сообщение автора поблагодарили: mazzy (2), macklakov (1), trud (1), Logger (3), AP-1055D (1).
Старый 03.12.2015, 22:17   #27  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Что ж смешного то ?
Нам с этим работать дальше.
Старый 03.12.2015, 22:25   #28  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Интересно, а если вот этот код

X++:
// тип x - AnyType
var x = myMap.lookup(sss);
Написать в каком нить стиле а-ля
X++:
// тип x - InventTable !
var x = myMap.lookup(sss) as InventTable;
Можно ли в таком случае компилятору в мозги впихнуть что ожидается тип InventTable и переменная должна быть InventTable. И чтобы перекрестные ссылки тоже подхватили.
Т.е. придать мапам типизацию на лету.

Вот здесь
http://blogs.msdn.com/b/mfp/archive/....aspx#10658170
сказано
Цитата:
DAP
3 Dec 2015 3:44 AM
#

It's basically type inferrence, so the type of variable is inferred by the compiler frm the right hand side expression. That means type safety is enforced which is not the case for Object/Common.
А нам бы сделать нечто подобное - сделать приведение типов на этапе компиляции, аналогично тому как описано по ссылке.

Последний раз редактировалось Logger; 04.12.2015 в 00:16.
Старый 03.12.2015, 22:38   #29  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А чем это будет отличаться от
X++:
InventTable x = myMap.lookup(sss);
?
Старый 03.12.2015, 23:06   #30  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
По смыслу - ничем.
Зато будет похоже на C# и будет использоваться ключевое слово var и с перекрестными ссылками все ок.

И волки целы и овцы сыты. Всем угодили.
Старый 04.12.2015, 06:49   #31  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Это очевидная ошибка в документации, в чем вы легко можете убедиться.
Да, ошибся... Присвоение любого класса переменной типа Object не означает автоматическое наследование от этого типа.
__________________
Возможно сделать все. Вопрос времени
Старый 04.12.2015, 06:50   #32  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,129 / 916 (35) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Logger Посмотреть сообщение
А какая от этого практическая польза ?
От этого один вред.
Мне казалось, что после 2012-й таких вопросов возникать уже не должно. Ты продал душу MS и попал в ад. Муки, неотъемлемая часть процесса.
__________________
Isn't it nice when things just work?
Старый 04.12.2015, 07:05   #33  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А чем это будет отличаться от
X++:
InventTable x = myMap.lookup(sss);
?
Этот код в, отличие от предыдущего, свалится, если в Map будет не InventTable. Предыдущий код запихает туда null. Поэтому когда я вижу на code review использование as без проверки на null - я делаю замечание.
Старый 04.12.2015, 07:09   #34  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AndyD Посмотреть сообщение
Ну, mfp же написал, что три недели будет знакомить с новым-неизведанным)
Так что, может, дальше будет и расписано, зачем же неявная типизация в Аксапте понадобилась

Глядишь, и анонимные типы появились.
))
Анонимных нет - явно сказано в посте.

Поэтому такой же пользы от var как в c# нет. Есть набор мелких удобств, которые mfp указал в посте.
За это сообщение автора поблагодарили: AndyD (2).
Старый 04.12.2015, 07:10   #35  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Logger Посмотреть сообщение
отсутствие каких-либо проверок на этапе компиляции?
Спасибо, belugin, акцентировал внимание на то что тип выводится всё-таки на этапе компиляции, а не в runtime. Т.е. проверки уровня компиляции будут! Не будет (пока) только проверок/подсказок уровня редактора. А если компилируются уже выведенные типы, то и перекрёстные ссылки должны работать. Перекрёстный ссылки же строятся по "байт коду" а не по тексту?
Старый 04.12.2015, 07:14   #36  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Logger Посмотреть сообщение
Можно ли в таком случае компилятору в мозги впихнуть что ожидается тип InventTable и переменная должна быть InventTable. И чтобы перекрестные ссылки тоже подхватили.
Т.е. придать мапам типизацию на лету.
.
Дженериков нет, а жаль. Можно было бы полностью перейти на дотнетовские коллекции вместо убогих аксаптовских
Старый 04.12.2015, 07:17   #37  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
. Перекрёстный ссылки же строятся по "байт коду" а не по тексту?
Как сейчас строятся я точно не знаю, но так как компилятор переписан на основе xlnt - я думаю по синтаксическому дереву. Проверю.
Старый 04.12.2015, 07:20   #38  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от belugin Посмотреть сообщение
Как сейчас строятся я точно не знаю, но так как компилятор переписан на основе xlnt - я думаю по синтаксическому дереву. Проверю.
Ну не суть. Главное что на этом этапе var уже заменён типом присваиваемого значения?
Старый 04.12.2015, 07:22   #39  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ну не суть. Главное что на этом этапе var уже заменён типом присваиваемого значения?
Да я уже несколько раз сказал что с точки зрения компилятора это полностью эквивалентно объявлению переменной такого же типа как и выражение справа явно. Включая все проверки.
Старый 04.12.2015, 08:50   #40  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Вообще var ввели в C# 3.0 и его использование породило множество сра... обсуждений. Например вот выжимка
За это сообщение автора поблагодарили: mazzy (2).
Теги
anytype, ax7, d365, mfp, var, x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mfp: X++ in AX7 Blog bot DAX Blogs 0 02.12.2015 22:13
CRM DE LA CREME! Some more useful javascripts for MS CRM Blog bot Dynamics CRM: Blogs 0 04.05.2010 11:05
mscrmblog: Mini Preview Window for Contact Lookup Field Blog bot Dynamics CRM: Blogs 0 10.03.2010 01:05
CRM DE LA CREME! Some useful CRMform jscripts Blog bot Dynamics CRM: Blogs 0 02.09.2009 10:05
crmForm.IsDirty зохватит всех! Черничкин Станислав Dynamics CRM: Разработка 10 19.02.2008 08:10

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:25.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.