为什么我不能将 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);
问题是:
- 您的 lambda returning
uint
而不是 bool
(查看文档以了解 among
的 return 值)。
- 编译器错误没有帮助。
以下代码编译失败:
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);
问题是:
- 您的 lambda returning
uint
而不是bool
(查看文档以了解among
的 return 值)。 - 编译器错误没有帮助。