一个reddit线程提出了一个显然有趣的问题:
尾递归函数可以简单地转换为迭代函数.其他的,可以通过使用显式堆栈进行转换.可每次递归转化为迭代?
帖子中的(计数器?)示例是对:
(define (num-ways x y)
(case ((= x 0) 1)
((= y 0) 1)
(num-ways2 x y) ))
(define (num-ways2 x y)
(+ (num-ways (- x 1) y)
(num-ways x (- y 1))
Run Code Online (Sandbox Code Playgroud) 我有一个情况,我有一个非常大的C#对象,但是,我只需要返回一些属性(可以在嵌套对象上),允许客户端JavaScript修改这些属性,然后发送生成的对象返回服务器以执行就地部分反序列化.
我们的想法是重用一些非常大的现有业务对象,但要智能化,只能序列化并仅将这些属性发送回客户端应用程序进行修改(以便将传输的数据量保持在最低水平).
我基本上有一个XML文件,我使用"路径语法"预先定义所有绑定,这只表示我需要序列化的那些属性.所以,我可以使用"WorkOrder.UserField1"或"WorkOrder.Client.Name"之类的东西.
我尝试使用自定义合约解析程序来确定是否应该序列化属性; 但是,我似乎没有关于"路径"(换句话说,链中对象模型中的其他属性)的信息,以确定属性是否应该序列化.
我也尝试使用自定义的JsonTextWriter,但似乎我不能覆盖跟踪路径所需的方法,即使有可用的Path属性.为了能够查看被序列化的属性的路径层次结构并确定是否应该通过在表中查找路径并做出决定来序列化,是否有一些我可能会忽略的东西?
我有一个自由格式JsonDocument,其中包含一个JsonPropertywith name internalName。我的问题是,我没有模型可以解析它(因为没有预定义的 JSON 模式),并且该属性可以出现在任何级别、父级、子级等。
如何获取JsonElementJSON 属性的所有值internalName?
到目前为止我尝试过的是这样的
var namesUsedInLayout = Layout.RootElement.EnumerateObject().Where(x => x.Name == "internalName").Select(x => x.Value.ToString());
Run Code Online (Sandbox Code Playgroud)
但这似乎只为我提供顶层,而不是子层或子层的子层。
我正在选择我所拥有的所有控件 form
如果是控件Treeviews,我将迭代他们拥有的所有节点
我需要类似的东西:(这是我的代码)
foreach (Control c in PanelSM.Controls)
{
if (c is TreeView)
{
TreeNodeCollection myNodes = c.Nodes;//<<<<< Here is a mistake
foreach (TreeNode n in myNodes)
{
String text = rm.GetString(n.Name);
//And more things
//...
//...
//...
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
谢谢