Разработка приложений с языком D

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

20
задан Jonathan Barbero 15 January 2017 в 22:51
поделиться

8 ответов

Обратите внимание, что любой библиотекой C можно пользоваться с D, поскольку D полностью поддерживает ABI C. D имеет некоторую ограниченную поддержку библиотек C++, хотя не библиотеки шаблонов C++.

15
ответ дан 30 November 2019 в 00:27
поделиться
  • я обычно не работаю сверху, освобождает (кроме lib станд.), поскольку я склонен делать очень низкоуровневый материал, таким образом, "ни один"
  • я использую Phobos, но поэтому я ленив, и это - все, что было вокруг, когда я запустил.
  • я использование это в коммерческом приложении. Но мы находимся очень в сегменте раннего последователя.
  • Спуск действительно добивается существенного прогресса. Однако для материала я делаю (очень тяжелая шаблонная работа), это не до задачи. Однако для большинства вещей, которые не должны быть почти таким количеством проблемы.
4
ответ дан 30 November 2019 в 00:27
поделиться

Я пользовался библиотеками танго + dfl и немного мое собственное. Документация танго превосходна. DFL не плохо. Да я действительно использовал танго затем, но попробованный phobos сначала. Готовый к большим приложениям? зависит от того, что Вы имеете в виду. В производственном использовании я только использовал его для frontends и updaters. До сих пор я только использовал энергию, чтобы кодировать и соблазнить для разработки gui, потому что я не мог найти правильного язя для меня.

4
ответ дан 30 November 2019 в 00:27
поделиться
  • Кроме оперативной библиотеки (в моем случае, Танго), я не использую, любой внешний освобождает.

  • документация Танго достойна. Это - крупная библиотека, и я сказал бы, что существует документация приблизительно для 80% из него, первое, что пришло на ум. И тех зарегистрированных классов я сказал бы, что приблизительно 80% из них завершены и корректны. Учитывая размер библиотеки, сумма документации является впечатляющей. Но это все еще не вполне, где это должно быть. Для реального использования Танго прямо сейчас, необходимо считать исходный код (который является чистым и правильно написанным).

  • я не знаю, готов ли D к большим приложениям. Мое приложение является довольно небольшим, и я довольно доволен им. С точки зрения дизайна языка я предпочитаю C# (или Java до меньшей степени). В сравнении дизайн языка D кажется мне несколько неуклюжий и неловкий. Действительно, единственная причина, я выбрал D для этого проекта, состояла в том потому что A) я должен был смочь скомпилировать свой код в DLL, который мог быть связан произвольным третьим лицом; B) мне был нужен мой код, чтобы быть портативным между Победой, Lin и Mac; и C) я не хотел писать в C/C++.

  • я использую Спуск (плагин Eclipse IDE). Это обеспечивает довольно хорошую подсветку синтаксиса и навигацию проекта. Автоматическое заполнение все еще оставляет желать лучшего, и интеграции с "разработчиком" как dsss все еще недостает. Но это лучше, чем блокнот :)

1
ответ дан 30 November 2019 в 00:27
поделиться
  • DFL (GUI), Достойный (для OpenGL), CUDA (GPGPU)
  • , DFL был прилично зарегистрирован, но перекрестные ссылки, в которых испытывают недостаток. Достойные / CUDA являются главным образом C обертками, хотя D сделал создание хорошего внутреннего API для CUDA очень легким.
  • нет, я использовал Phobos
  • Да, хотя существуют определенные типы больших приложений, которые были бы намного быстрее для записи на другом языке.
  • я использовал Код:: блоки для моего основного IDE и Соблазняют для дизайна GUI.
1
ответ дан 30 November 2019 в 00:27
поделиться
  • Танго
  • Да, хотя немного больше примеров могло быть хорошо
  • Да
  • Да, я думаю так. Но если бы программисты привыкли к законченным IDE (Visual Studio MS), они, вероятно, не хотели бы D,
  • я использую мелкого изготовленного на заказ основанного на Scintilla редактора, с опциями создать приложения с помощью зародыша, dsss или dmd.
4
ответ дан 30 November 2019 в 00:27
поделиться
  • я использую Танго, Jive stacktrace, dconstructor, дунит и самонасмешка. Я поддерживаю последних трех из тех, все же.

  • Танго имеет разумную документацию. Я побежал на несколько мест, где это имело меньше документации, чем мне было нужно; в этих случаях я сделал билеты, запрашивающие лучшую документацию. Jive не требует документации. Я надеюсь другие, я использую, имеют разумную документацию; я работал над этим немного.

  • Да, я использую Танго.

  • можно создать крупные приложения в ФОРТРАНЕ; D лучше. Основным вопросом является поддержка библиотеки. Вещи как криптография не хорошо поддерживаются в D, насколько я знаю. Но было довольно легко найти все, в чем я нуждался. Что-либо еще, можно, вероятно, записать обертку вокруг существующей библиотеки в C без большой проблемы.

  • я обычно использую энергию, но теперь я переключаюсь на Спуск. Его автозавершение намного лучше, чем Vim.

2
ответ дан 30 November 2019 в 00:27
поделиться
  • Главным образом они я разрабатываю меня - SDWF и Служебная Библиотека Stewart.
  • Я надеюсь, что так.
  • Да, хотя я не уверен, что библиотеки и поддержка IDE довольно готовы все же. И D не довольно готов к значительной сторонней реализации, которая могла бы играть роль в достижении этой стадии.
  • я делаю большую часть своего редактирования в TextPad. Который по общему признанию не полностью совместим с D (две недостающих функции подсветки синтаксиса, и не поддерживает Unicode), но он работает.
1
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

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