На мой взгляд — совершенно не нужная вещь. Экономии три копейки, применяться будет раз в год.
Лямбды имеют смысл только когда они очень короткие (буквально несколько символов). Функция с рекурсивыным вызовом уже по определению не может быть короткой. Стало быть имеет смысл выносить ее в локальную функцию:
Это более общий вопрос (хотелака) — позволять задавать в качестве значения по умолчанию функции любое выражение языка. Это уже обсуждалось и вроде как было одобрено. Но это требует не мало работы. К сожалению в дотнете не предусматривается подобной возможности. Так что решение будет работать только в рамках немерла.
Для локальных функций подобная инициализация и так доступна.
Если никто из внешних контребьютеров не займется этой фичей для Н1, то по всей видимости это будет реализовано только в Н2.
KK>3. Метод у Hashtable, типа Get, но который бы возвращал не option[Value], а Value, но при этом генерировал бы эксепшн, если ключ не найден.
Такой метод есть — это индексатор. Пиши hashTable[key] и будет тебе счастье.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
А у меня такая хотелка:
1. В проекте на С#, при нажатии комбинации "ctrl + .", в момент, когда курсор стоит на неизвестном классе,
автоматически открывается меню с предложением вставить нужный using.
Скажем, я хочу использовать класс WebClient. Ну не помню я, в каком он неймспейсе.
Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net.
2. Все то же форматирование кода табами, — не работает. Я создавал https://github.com/rsdn/nemerle/issues/7в багтрекере. Ее отметили как решенную.
В свежих сборках как не было, так и нет. Вернее сразу, как пофиксили работало, но теперь снова нет.
Может необходимы какие-либо настройки в студии?
Здравствуйте, febus, Вы писали:
F>А у меня такая хотелка: F>1. В проекте на С#, при нажатии комбинации "ctrl + .", в момент, когда курсор стоит на неизвестном классе, F>автоматически открывается меню с предложением вставить нужный using. F>Скажем, я хочу использовать класс WebClient. Ну не помню я, в каком он неймспейсе. F>Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net.
Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.
F>2. Все то же форматирование кода табами, — не работает. Я создавал https://github.com/rsdn/nemerle/issues/7в багтрекере. Ее отметили как решенную. F>В свежих сборках как не было, так и нет. Вернее сразу, как пофиксили работало, но теперь снова нет. F>Может необходимы какие-либо настройки в студии?
Естественно, необходимы. Нужно зайти в Tools\Options и в ветке Text "Editor\Nemerle\Advanced" переключить "Use smart tab" в false.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: F>>Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net. VD>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.
И где эту фичу можно увидеть? В контекстном меню ее нет.
Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.
Ok, я нашел и добавил его туда вручную. Тогда солюшн открывается.
В контекстном меню есть привычные фунции "Go to declaration/definition". Хотелось пошарить по исходникам. Так быстрее. Но они не работают. Не работают и не должны или что-то не так?
Здравствуйте, YF, Вы писали:
VD>>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко. YF>И где эту фичу можно увидеть? В контекстном меню ее нет.
https://github.com/rsdn/nemerle/issues/24
YF>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.
Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, YF, Вы писали:
VD>>>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко. YF>>И где эту фичу можно увидеть? В контекстном меню ее нет.
VD>https://github.com/rsdn/nemerle/issues/24
Да... Фича доступна только в VS 2010.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: YF>>И где эту фичу можно увидеть? В контекстном меню ее нет. VD>https://github.com/rsdn/nemerle/issues/24
Становлюсь на webclient, жму shift-alt-space и вижу лишь виноусовскую стандартную менюшку слева вверху, "изменить размер, ... закрыть приложение".
YF>>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot. VD>Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять.
И не нужно, я врядли пойму такие дебри.
Так а "Go to definition", oн есть?
Здравствуйте, YF, Вы писали:
YF>Здравствуйте, VladD2, Вы писали: YF>>>И где эту фичу можно увидеть? В контекстном меню ее нет. VD>>https://github.com/rsdn/nemerle/issues/24 YF>Становлюсь на webclient, жму shift-alt-space и вижу лишь виноусовскую стандартную менюшку слева вверху, "изменить размер, ... закрыть приложение".
У меня работает. Значит, ты используешь не ту версию IDE. Как я уже говорил — эта фича доступна только в VS 2010, и только при сборке из исходников последней версии.
YF>>>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot. VD>>Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять. YF>И не нужно, я врядли пойму такие дебри. YF>Так а "Go to definition", oн есть?
Да.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: VD>У меня работает. Значит, ты используешь не ту версию IDE. Как я уже говорил — эта фича доступна только в VS 2010, и только при сборке из исходников последней версии.
Да, я прочитал уже в другом сообщении, да и на гите есть местка vs2010.
YF>>Так а "Go to definition", oн есть? VD>Да.
Тоже только в 2010-й студи?
В 2008-ой не работает.
Еще вопрос. Для сборки 2010-й студии необходимо ставить
— SP1
— SDK SP1?
А то у меня не выходит собрать ее из исходников. Ругается вот так:
D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualStu
dio.csproj(744,3): error MSB4019: The imported project "C:\Program Files\MSBuil
d\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" was not found. Co
nfirm that the path in the <Import> declaration is correct, and that the file e
xists on disk.
Done Building Project "D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualS
tudio\Nemerle.VisualStudio.csproj" (Build target(s)) -- FAILED.
Done Building Project "D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuic
k target(s)) -- FAILED.
Build FAILED.
"D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuick target) (1) ->
"D:\GitRepository\nemerle\Nemerle.Compiler.nproj" (Build target) (4) ->
(CoreCompile target) ->
ncc\generation\HierarchyEmitter.n(104,11,104,52): warning : N618: field: stat
ic RequestMinimum : System.Security.Permissions.SecurityAction; is obsolete: 'A
ssembly level declarative security is obsolete and is no longer enforced by the
CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more inf
ormation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(105,11,105,53): warning : N618: field: stat
ic RequestOptional : System.Security.Permissions.SecurityAction; is obsolete: '
Assembly level declarative security is obsolete and is no longer enforced by th
e CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more in
formation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(106,11,106,51): warning : N618: field: stat
ic RequestRefuse : System.Security.Permissions.SecurityAction; is obsolete: 'As
sembly level declarative security is obsolete and is no longer enforced by the
CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more info
rmation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(113,9,113,61): warning : N618: method Syste
m.AppDomain.DefineDynamicAssembly(name : System.Reflection.AssemblyName, access
: System.Reflection.Emit.AssemblyBuilderAccess, dir : string, requiredPermissi
ons : System.Security.PermissionSet, optionalPermissions : System.Security.Perm
issionSet, refusedPermissions : System.Security.PermissionSet) : System.Reflect
ion.Emit.AssemblyBuilder is obsolete: 'Assembly level declarative security is o
bsolete and is no longer enforced by the CLR by default. See http://go.microsof
t.com/fwlink/?LinkID=155570 for more information.' [D:\GitRepository\nemerle\Ne
merle.Compiler.nproj]
"D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuick target) (1) ->
"D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualSt
udio.csproj" (Build target) (12) ->
D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualS
tudio.csproj(744,3): error MSB4019: The imported project "C:\Program Files\MSBu
ild\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file
exists on disk.
Здравствуйте, YF, Вы писали:
YF>Тоже только в 2010-й студи? YF>В 2008-ой не работает.
В 2008 тоже работает. Просто могут быть случаи в которых что-то глючит. Ну, и на проекте компилятора вообще ничего работать не может.
YF>Еще вопрос. Для сборки 2010-й студии необходимо ставить YF>- SP1 YF>- SDK SP1?
Да. На машине должно стоять: VS 2010 SP1 и VS 2010 SDK SP1. Саму сборку нужно производить из под администратора. Проще всего запустить из под администратора (в контекстом меню пункт Ran As Adminstrator) некий файловый менеджер (Total Commander или FAR), а из него уже батник DevBuildQuick-4.cmd
После установки лучше перезагрузиться, так как пути прописываются в системе, а некоторые приложения их не умеют обновлять.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: VD>Да. На машине должно стоять: VS 2010 SP1 и VS 2010 SDK SP1. Саму сборку нужно производить из под администратора. Проще всего запустить из под администратора (в контекстом меню пункт Ran As Adminstrator) некий файловый менеджер (Total Commander или FAR), а из него уже батник DevBuildQuick-4.cmd VD>После установки лучше перезагрузиться, так как пути прописываются в системе, а некоторые приложения их не умеют обновлять.
Собрал VS 2010.
А фичи как не было, так и нет. То же самое. Может быть, что решарпер перекрывает сочетание клавиш alt-shift-space?
Выскакивает стандартная менюха, как если нажать alt-space.
Исходники новые.
Здравствуйте, YF, Вы писали:
YF>А фичи как не было, так и нет. То же самое. Может быть, что решарпер перекрывает сочетание клавиш alt-shift-space?
Решарпер то? Легко!
Еще может быть, что шорткат у тебя уже переопределен.
YF>Выскакивает стандартная менюха, как если нажать alt-space. YF>Исходники новые.
Попробуй зайти в настройки и найти команду Edit.DisplayImportCompletion.
Если ее нет, то что-то не так с собранной интеграцией.
Если команда есть, то посмотри что назначено на указанный шортка, и попробуй задать для Edit.DisplayImportCompletion другой (или тот же) шорткат.
Если активен решарпер, то его вообще лучше временно отключить. Или хотя бы включить у него режим использования обработчиков клавиатуры студии.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.