以下代码无法编译:
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
的重载,它接受一个谓词,计算谓词返回true的R
的所有元素。那么,当我尝试以这种方式使用count
时,为什么编译器会抱怨?
答案 0 :(得分:7)
assert("(((())))()()()()))".count!(c => c.among!('(', ')') != 0) > 0);
问题是:
uint
而不是bool
(请查看文档以获取among
的返回值)。