小编Rya*_*yan的帖子

如何改进这个F#功能

我在C#方面很有经验,但对F#和功能编程很新.现在我想在F#中实现一个类库.这是其中一个函数:它取一个整数列表<= 9并改变连续9,如9,9,9,9到9,10,11,12.例如[9; 9; 9; 1; 4; 0; 1; 9; 9; 9; 9]将改为[9; 10; 11; 1; 4; 0; 1; 9; 10; 11; 12.

C#功能很简单:

void ReleaseCap(List<int> items)
{
    for (int i = 1; i < items.Count; i++)
    {
        var current = items[i];
        var previous = items[i - 1];
        //If curernt value = 9 and previous >=9, then current value should be previous+1
        if (current == 9 && previous >= 9)
        {
            items[i] = previous + 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在是我的F#尾递归.它不是通过索引循环List,而是递归地将项目从初始列表移动到已处理的列表,直到初始列表中的所有内容都消失为止:

let …
Run Code Online (Sandbox Code Playgroud)

f# functional-programming

4
推荐指数
1
解决办法
120
查看次数

使用大量复杂的存储过程有什么好处

对于典型的3层应用程序,我看到在许多情况下,它们在数据库中使用了大量复杂的存储过程.我无法从这种方法中获益.根据我个人的理解,这种方法存在以下缺点:

  1. 交易变得粗糙.
  2. 业务逻辑进入数据库.
  3. 大量计算是在数据库服务器中完成的,而不是在应用程序服务器中完成的.同时,数据库仍然需要完成其原始工作:维护数据.数据库服务器可能成为瓶颈.

我猜可能有两个好处:

  1. 无需编译即可更改业务逻辑.但是SP比Java/C#代码更难维护和测试.
  2. 减少数据库连接的数量.但是,在常见的情况下,数据库的瓶颈是硬盘而不是网络io.

有谁能告诉我使用大量存储过程的好处,而不是让工作在业务逻辑层完成?

database stored-procedures

3
推荐指数
1
解决办法
544
查看次数

C#Random不像随机一样工作

我有一个图,每个节点有4个子节点.我写了一个算法来生成从开始节点到结束节点的随机路径.在每个节点,它选择一个随机的下一个节点.可以重新访问访问节点.

代码如下:

public List<Node> GetPath(Node begin, Node end)
{
    var nodes = new List<Node>();
    var node = begin;
    while (node != end)
    {
        nodes.Add(node);
        var next = node.Children[new Random().Next(4)];
        node = next;
    }

    nodes.Add(end);

    return nodes;
}
Run Code Online (Sandbox Code Playgroud)

但有时候,Random不能按预期工作."new Random().Next(4)"继续生成0.所以始终是第一个子节点被选择,并且生成一个非常长的重复序列,如node1-> node2-> node1-> node2 ....发生内存不足异常.

有没有办法让Random类正常工作?

.net c# random

3
推荐指数
2
解决办法
2427
查看次数

Haskell通过数值将列表拆分为两个

我想通过一个数据透视值将[a]分成([a],[a]),我有我的代码

splitList :: (Ord a) => a -> [a] -> ([a],[a])
splitList pivot list = 
    ([x | x <- list, x <= pivot], [x | x <- list, x > pivot])
Run Code Online (Sandbox Code Playgroud)

但它迭代列表两次以生成两个列表,有没有办法只迭代一次?

haskell

3
推荐指数
1
解决办法
1218
查看次数

如何在SQL Server中将yyyymmddMilliseconds转换为datetime?

我得到了一个包含yyyymmddMilliseconds格式的时间数据的表.例如,20100218000051234.如何将其转换为DateTime类型?在SQL Server 2008中.

sql sql-server datetime

1
推荐指数
1
解决办法
2758
查看次数