除典型之外,还有哪些其他与语言无关的设计递归函数的方法:
if (counter < 1)
return output;
else
callSelf();
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?每当查看示例时,我总会看到上面代码的一个版本.
谢谢!:)
language-agnostic recursion functional-programming tail-recursion
我真的很难理解为什么,当我改变我的代码使用lamdba表达式时,它不起作用.
此代码在控制台上工作和打印:
object dummy = new object();
InterServer.ExecuteDataReader(new InterServerRequest(ServerID.a_01, "dbo.getbooks")
{
Params = new Dictionary<string, object> {
{ "Tool", "d1" },
{ "Loc", locale == string.Empty ? null : locale } }
},
(_, reader) =>
{
reader.AsEnumerable(r => (r.GetString(r.GetOrdinal("book")))).ToList().ForEach(Console.WriteLine);
return new Response(dummy);
}
);
Run Code Online (Sandbox Code Playgroud)
此代码已更改为使用lambda表达式; 它没有打印任何东西,我不明白为什么:
InterServer.ExecuteDataReader(new InterServerRequest(ServerID.a_01, "dbo.getbooks")
{
Params = new Dictionary<string, object> {
{ "Tool", "d1" },
{ "Loc", locale == string.Empty ? null : locale } }
},
(_, reader) =>
{
return new Response(new …Run Code Online (Sandbox Code Playgroud) 我想通过使用正则表达式来优化原始文本,给出(patten,replacement)元组的列表.
我试图在list元素上使用patten匹配但是失败了,错误显示"这个表达式应该有类型字符串*字符串列表,但这里有类型'列表".
我该如何解决这个问题?非常感谢.
代码如下:
let rec refine (raw:string) (rules:string*string list) =
match rules with
| (pattern,replacement) :: rest ->
refine <| Regex.Replace(raw,pattern,replacement) rest
| [] -> raw
Run Code Online (Sandbox Code Playgroud) erlang被认为是托管的还是你必须处理内存/指针?
编辑:我的问题是,原本"有没有一个标准名称,以展名单列表的功能,但只有一层深?",但查克的回答是措辞更接近我其实是想问问,所以我给它改名.不过,这三个答案对我都很有用.谢谢.
"扁平化"似乎是这需要一棵树,但是建立原子组成的列表深它们嵌套,但对于只有一个级别之后停止功能的功能广为接受的名字吗?所以((1 2)((3 4)(5 6))(7 8))"somethings"到(1 2(3 4)(5 6)7 8)."某些东西"在多种语言/库中是否有共同的名称?
这个问题的答案:
建议'链'可能是一个很好的猜测,但它是否足以成为"标准"?
我正在使用Firefox 3.5.7并且在Firebug中我正在尝试测试array.reduceRight函数,它适用于简单的数组,但是当我尝试类似的东西时,我得到了一个NaN.为什么?
>>> var details = [{score : 1}, {score: 2}, {score: 3}];
>>> details
[Object score=1, Object score=2, Object score=3]
>>> details.reduceRight(function(x, y) {return x.score + y.score;}, 0)
NaN
Run Code Online (Sandbox Code Playgroud)
我也试过map,至少我可以看到每个元素的.score组件:
>>> details.map(function(x) {console.log (x.score);})
1
2
3
[undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
我在https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight上阅读了文档,但显然我无法在我的详细信息数组中总结所有得分值.为什么?
假设我有一份A的仲裁清单
class A
{
string K {get;set;}
string V {get;set;}
}
...
List<A> theList = ...
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法从列表中组成字典?(如下所示)
Dictionary<string, string> dict = magic(x => x.K, x => x.V, theList)
Run Code Online (Sandbox Code Playgroud)
我不想写下面的代码:
var d = new Dictionary<string, string>
foreach(var blah in theList)
d[blah.K] = blah.V
Run Code Online (Sandbox Code Playgroud) 我想在ruby中做这样的事情:
safe_variable = begin
potentially_nil_variable.foo
rescue
some_other_safe_value
end
Run Code Online (Sandbox Code Playgroud)
...并将异常块(开始/救援/结束)视为函数/块.这不起作用,但有没有办法得到类似的结果?
请注意,我实际上在做的是这个,但是IMO很丑陋:
begin
safe_variable = potentially_nil_variable.foo
rescue
safe_variable = some_other_safe_value
end
Run Code Online (Sandbox Code Playgroud)
UPDATE
我想我在ruby语法上遇到了一个问题.我实际上在做的是:
object_safe = begin potentially_nil_variable.foo
rescue ""
end
Run Code Online (Sandbox Code Playgroud)
错误是class or module required for rescue clause.可能它认为""应该是异常结果的占位符.
如何将函数作为变量传递,然后使用该变量调用它?
例如
test(echo);
function test($function)
{
$function("Test");
}
Run Code Online (Sandbox Code Playgroud)