【发布时间】:2010-10-07 14:36:26
【问题描述】:
我想知道如何用函数式编程语言做到这一点。也许是 F# 或 Haskell。
除了find 和rfind 之外,有人可以给我一个不使用任何函数调用的例子吗?
此函数使用i 作为slash 的编号来查找下一个斜杠(
size_t findSlash(const char *sz, size_t i)
{
std::string s = sz;
size_t a, b, c, n, ai = abs(i), pos=0;
for (n=0; n<ai; n++)
{
if (i<0)
{
a = s.rfind("\\", pos);
b = s.rfind("/", pos);
}
else
{
a = s.find("\\", pos);
b = s.find("/", pos);
}
if (a==-1u)
{
if (b==-1u)
return pos;
c = b;
}
else if (b==-1u)
c = a;
else
c = min(a, b);
pos = c+1;
}
return c;
}
【问题讨论】:
-
你能解释一下你的 c++ 函数在做什么吗?
-
您的代码中有许多错误,例如,如果 i==0 则
c未定义; 'if (i<0)' 永远不会发生,因为您将i定义为size_t。 -
到目前为止,我统计至少有 5 人要求您澄清这段代码的作用,因此您不太可能将代码准确地转换为函数式样式。您介意具体描述一下这个函数的作用吗?