Hom*_*mam 1 c# lambda inline-code
我正在尝试使用递归的lambda表达式为字符串中单词的计数出现编写一个内联函数.
功能:
Func<string, string, int> getOccurrences = null;
getOccurrences = (text, searchTerm) =>
text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) == -1
? 0
: getOccurrences(
text.Substring(
text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase)
+ searchTerm.Length),
searchTerm) + 1;
Run Code Online (Sandbox Code Playgroud)
问题是我调用了IndexOf两次方法,第一个用于递归中断条件,第二个用于获取添加它的值.
有没有建议打电话一次?
提前致谢.
如果您不介意非纯函数lambda,您可以这样做: -
Func<string, string, int> getOccurrences = null;
getOccurrences = (text, searchTerm) =>
{
int i = text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase);
return i == -1 ? 0 : getOccurrences(i + searchTerm.Length), searchTerm) + 1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |