为什么我不能将 std.algorithm.count 与谓词函数一起使用

Why Can't I Use std.algorithm.count With a Predicate Function

以下代码编译失败:

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) 清楚地表明 count 的重载采用谓词,计算谓词 [=] 的 R 的所有元素23=] 是的。那么为什么当我尝试以这种方式使用 count 时编译器会报错呢?

assert("(((())))()()()()))".count!(c => c.among!('(', ')') != 0) > 0);

问题是:

  1. 您的 lambda returning uint 而不是 bool(查看文档以了解 among 的 return 值)。
  2. 编译器错误没有帮助。