Шаблоны для смешивания F# и C# в том же решении

Не ответ на вопрос, но который можно также выбрать индексом, где я - индекс объекта, Вы хотите выбрать:

var formObj = document.getElementById('myForm');
formObj.leaveCode[i].selected = true;

можно также циклично выполниться через объекты для выбора значением дисплея с циклом:

for (var i = 0, len < formObj.leaveCode.length; i < len; i++) 
    if (formObj.leaveCode[i].value == 'xxx') formObj.leaveCode[i].selected = true;
33
задан wonea 1 November 2017 в 11:26
поделиться

7 ответов

Есть определенные места, где традиционные функциональные методы имеют большой смысл и приводят к созданию более компактного и лаконичного кода. Классическим примером является синтаксический анализ текста и обработка дерева, которые часто появляются вместе, когда вы реализуете DSL. Такие возможности F #, как анонимные итераторы, расширяемое сопоставление с образцом и возможность определять собственные инфиксные операторы, которые служат комбинаторами, действительно здесь очень помогают. Между тем, со стороны C # LINQ - хорошее начало, но он не приведет вас туда полностью.

Я предлагаю вам взглянуть на FParsec и убедиться, насколько лучше подходит для расширенной обработки / синтаксического анализа текста, чем любая библиотека, которую вы могли бы написать на C #.

17
ответ дан 27 November 2019 в 18:30
поделиться

Я написал службу WCF на F # который действует как плагин переводчика для чтения сервиса WFS (геопространственных данных). Код получился красивым и лаконичным.

В то время как автономная dll, которую я скомпилировал, отлично работала в решении C # моего коллеги, он все же попытался задушить меня, когда я показал ему код. Думаю, культурный шок.

Так мы использовали F # и C # в одном проекте? Да и нет. Нет, потому что я переписал это на C #. Да, потому что создание и тестирование прототипа на F # сэкономило мне больше времени, чем мне потребовалось, чтобы перевести его в стиль C # LINQ.

Я не хотел бы пытаться создавать все на F #, но я '

14
ответ дан 27 November 2019 в 18:30
поделиться

Вы заставили меня задуматься, и я попытался решить, где мне это сделать . На ум приходят две ситуации:

  1. Если я создаю проект замка (MVC), у меня, вероятно, будут контроллеры на C #, в то время как все BL и модели находятся на F # (я предпочитаю проектировать на основе предметной области и подключать BL в модели или через внедренные компоненты [ala DI])
  2. Запуск нового проекта, но включение существующих библиотек, чтобы не изобретать велосипед.

Кроме того, я большой сторонник «правильного инструмента для работы» ', поэтому, если я думаю, что тот или другой подойдет лучше, я бы использовал это.

5
ответ дан 27 November 2019 в 18:30
поделиться

Языки - это просто инструмент. Как и Люк, я большой поклонник использования правильного инструмента для работы. Если конкретное приложение выиграет от использования C # и F #, то смешивание кажется мне разумным.

Что касается того, как это сделать, см .:

Можно ли смешивать языки .net в одном проекте?

Внизу. линия: вы можете объединить две библиотеки DLL, использующие разные языки, в одну в качестве этапа после сборки. Или вы можете использовать несколько языков на веб-сайте, который скомпилирован на стороне сервера.

2
ответ дан 27 November 2019 в 18:30
поделиться

Yes, in future I think that we must combine these kinds of languages like OOP (C#) with Functional language (F#) to take advantage of multicore processing. C# 4 has classes to support this but some things are done better in F#.

0
ответ дан 27 November 2019 в 18:30
поделиться

Я использую F # для исследовательского программирования в своих решениях на C #. Например, я запускаю свое приложение C # WPF через интерактивную консоль F # визуальной студии и копаюсь в работающем приложении. Можно сэкономить много сеансов редактирования-компиляции-отладки ..

3
ответ дан 27 November 2019 в 18:30
поделиться

У нас есть приложение, которое получает все свои функции, загружая части MEF . Большинство частей написано на C #, но есть одна часть, которая выполняет двоичную обработку данных, написанную на F #. В этом случае F # просто лучше подходил для этой работы.

Часть F # соответствует интерфейсу, определенному в C #, и приложение C # не знает он имеет дело с частью F # (кроме зависимости от fsharp.dll).

Конечно, это относится не только к F #, если кто-то хочет написать или переписать часть (аддон, модуль, все, что вы хотите вызвать it) на другом языке, он будет взят MEF и предоставлен нашему приложению без каких-либо недостатков.

Мы выбираем язык, который лучше всего подходит для решения конкретной проблемы, и MEF абстрагирует от нас все детали, поэтому мы не о чем беспокоиться.

5
ответ дан 27 November 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: