Почему я не могу использовать std.algorithm.count с функцией предиката
Следующий код не компилируется:
assert("(((())))()()()()))".count!(c => c.among!('(', ')')) > 0);
С сообщением об ошибке:
"Error: template std.algorithm.searching.count cannot deduce function from argument types !((c) => c.among!('(', ')'))(string), candidates are..."
Но [стандартная библиотека ( http://dlang.org/phobos/std_algorithm_searching.html) ясно показывает, что существует перегрузка count
который принимает предикат, считая все элементы R
для которого предикат возвращает истину. Так почему компилятор жалуется, когда я пытаюсь использовать count
сюда?
1 ответ
Решение
assert("(((())))()()()()))".count!(c => c.among!('(', ')') != 0) > 0);
Проблемы:
- Что ваша лямбда возвращается
uint
вместоbool
(проверьте документацию на возвращаемое значениеamong
). - Это ошибка компилятора не помогает.