Я думаю, что вместо принудительной установки tableView.reloadData()
и tableView.layoutIfNeeded()
в viewDidLoad
, вы можете просто установить автоматическую высоту вашего tableView в viewWillLayoutSubviews()
:
Swift:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tableView.estimatedRowHeight = 300
tableView.rowHeight = UITableViewAutomaticDimension
}
DSL, который настолько успешен, что получил свой собственный тег SO, является языком регулярных выражений. Конечно, это относится к области сопоставления строковых шаблонов.
Другой популярный, но с которым у меня нет опыта, - это VHDL. Популярность VHDL объясняется тем фактом, что его легко преобразовать для использования в FPGA.
[править] Хотя это, конечно, не полный Тьюринг, спецификатор формата C printf () можно рассматривать как еще один предметно-ориентированный язык.
Веб-поиск Google поддерживает некоторую все более изощренную параметризацию
Вы можете утверждать, что это один из наиболее широко используемых DSL, если даже небольшая часть их пользовательской базы когда-либо использует один из них в отличие от стандартного списка слов.
В Ruby on Rails есть части, которые можно рассматривать как предметно-ориентированные языки. В частности, его язык для определения реляционных таблиц.
Вы можете написать предметно-ориентированный язык на таких языках, как Boo, но я думаю, что само определение предметно-ориентированного языка указывает на то, что большую часть времени он будет в определенной отрасли или даже одна компания ...
В Википедии есть хорошая вводная статья по этому поводу.
В этом обзоре есть раздел примеров с некоторыми хорошими ссылками.
AWK предоставляет язык для обработки полуструктурированных текстовых данных.
Многие из наиболее мощных широко используемых инструментов командной строки unix, таких как find и grep, могут быть классифицированы как имеющие специфичный для предметной области язык (даже если они ограничены только аргументами командной строки)
Вот вопрос, который я задал о DSL, написанных на Ruby: Репозитории Ruby DSL (Domain Specific Language) , examples
Помимо Ruby DSL, SQL является прекрасным примером очень популярного DSL, как и AWK.
. Википедия предлагает , что формулы электронных таблиц и сценарии оболочки зависят от предметной области. языков. Это сделало бы их, вероятно, самыми распространенными примерами.
EBNF , вероятно, является наиболее широко используемым предметно-ориентированным языком в своей предметной области - языком для описания языков.
MEL (язык выражений Maya) - это язык командной строки, который AutoDesk Maya использует на протяжении всего проекта. Формат файла Maya Ascii, в котором могут быть сохранены сцены, использует MEL для создания своих сцен. Пользовательский интерфейс в значительной степени построен и управляется с помощью сценариев MEL. Выражения, которые вы можете использовать для управления каналами и атрибутами объектов, - это MEL.
Я полагаю, что он технически может считаться встроенным языком в тех случаях, когда вы просто пишете для него сценарии. Однако без MEL Maya практически не существовало бы. Без формата файла ascii, без пользовательского интерфейса и т. Д.
NMake, MSBuild, lex, yacc, bison, flex, TeX, PostScript, XAML, SSIS, Wix
Эрланг изначально был языком для телекоммуникационных компаний, хотя сейчас (иногда) используется как язык общего назначения.
Я не знаю, хотите ли вы также рассматривать графические DSL. Я бы включил
Оба вышеперечисленных были созданы с использованием DSL Toolkit .
Две (не упомянутые ранее), которые произвели на меня наибольшее впечатление:
Я большой поклонник декларативных DSL. Операционные DSL (такие как Maple, Mathematica и R тоже хороши, но не так уж сильно отличаются от обычных языков).
Tcl - это язык, который изначально был разработан как основа для создания DSL - обеспечивая базовую функциональность, такую как программирование и ввод/вывод, в то время как специфические части создавались заново для каждого приложения - и который вырос в общий язык сценариев. Одним из наиболее известных DSL на базе Tcl является Expect.