Это уже довольно лаконично, но было бы здорово, если бы я мог составить список a la Ruby. Скажем, у меня есть QStringList
myStringList, который содержит такие вещи, как «12.3», «-213.0», «9.24». Я хочу просто сопоставить все это с помощью toDouble
без необходимости повтора. У Qt есть метод для этого?Могу ли я отображать списки в Qt?
// i.e. I would love a one-liner for the following
// NB QT provices foreach
QList<double> myDoubleList;
foreach(QString s, myStringList) {
myDoubleList.append(s.toDouble());
}
Да, контейнер Qt являются STL-совместимыми, так что все функционально-стиль вещей, которые вы можете сделать с STL контейнеров, которые можно сделать с контейнерами Qt, а также. Также посмотрите на boost :: bind(). Общий синтаксис, связанный с функциональным программированием STL plus, может вызвать тошноту для рубинов или хакеров-хакеров, хотя:) –
Это не совсем функциональное программирование: вам пришлось объявить myDoubleList. Было бы неплохо преобразовать список одного типа в список другого и передать его функции, все в одной строке. И чтобы быть такой же мощной, как реальная функция отображения, в примере должен использоваться лямбда для окончательного аргумента для std :: transform. Но тогда синтаксис становится уродливым. – ecloud