小编yam*_*men的帖子

单一案件歧视联盟的目的

我正在定义一个monadic observable/reactive解析器.这与普通解析器的行为完全不同,因为它是连续查询.基础类型是:

IObservable<'a> -> IObservable<'b>
Run Code Online (Sandbox Code Playgroud)

通过查看函数式语言中的各种解析器实现,似乎更合适的定义事物的方式是单个案例区分联合:

type Pattern<'a,'b> = Pattern of (IObservable<'a> -> IObservable<'b>)
Run Code Online (Sandbox Code Playgroud)

这意味着我需要提取底层函数来使用它:

let find (Pattern p) = p
Run Code Online (Sandbox Code Playgroud)

问题是:这只是按惯例,还是为了以后扩展的目的,或者即使定义永远不会改变,是否有理由这样做?

奖金问题:如果只是为了更方便的类型签名,为什么不使用类型别名:

type Pattern<'a,'b> = IObservable<'a> -> IObservable<'b>
Run Code Online (Sandbox Code Playgroud)

我已经通过这种方式取得了很大的进步,并且没有找到不使用DU来影响可组合性的情况.

monads f# discriminated-union

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

从WaveStream中读取2通道样本到阵列的最简单方法

我一直在努力解决这个问题很长一段时间,我找不到一个有效的解决方案.

我有一个wav文件(16位PCM:44kHz 2通道),我想为两个通道中的每一个提取两个数组的样本.据我所知,NAudio库中不存在直接的方法,所以我尝试运行以下代码来读取一些隔行扫描的样本,但缓冲区数组保持为空(只是一堆零):

using (WaveFileReader pcm = new WaveFileReader(@"file.wav"))
{
    byte[] buffer = new byte[10000];
    using (WaveStream aligned = new BlockAlignReductionStream(pcm))
    {
        aligned.Read(buffer, 0, 10000);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将非常感激.

c# naudio

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

Parallel.Invoke vs Task为什么exceution时间不同?

我有一个队列,里面有144个项目.每个队列元素都是一个请求.我试图通过尝试并行运行代码来提高处理性能.我称之为performaction(request)方法.其中实例化对象并将请求传递给它并执行操作.我可以并行运行此操作,因为这些请求是独立的,请求的操作结果也是相互独立的.首先我试过了

foreach(var request in queue.Values)
    Parallel.Invoke(() =>PerformAction(request);
Run Code Online (Sandbox Code Playgroud)

然后我尝试了相同的foreach.

var task = new Task(() => PerformAction(request));
task.Start();
Run Code Online (Sandbox Code Playgroud)

在我所拥有的foreach之外

Task.WaitAll();
Run Code Online (Sandbox Code Playgroud)

当运行程序时,parallel.invoke花了将近3秒才完成,而Task几乎完成了0.005秒.

我有以下问题:

  1. 为什么并行调用花费的时间比任务多?似乎并行调用没有按照我想要的并行模式运行.
  2. 当我使用Task时,对于我创建新任务的每个请求,如果我有1000个请求的请求,我将最终创建1000个线程或CPU将根据需要创建线程吗?
  3. Task.WaitAll()out side会在程序终止之前等待所有任务完成吗?

c# parallel-processing task-parallel-library

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

在.NET 3.5中将类型十进制转换为十六进制(字符串)

我试图将十进制转换为十六进制作为字符串.我已经到处寻找解决方案了,但我能找到的只有Int或者长到十六进制.使用下面的代码时,我收到"格式说明符无效"错误.

    Decimal decValue = 18446744073709551615
    string hexValue = decValue.ToString("X");
Run Code Online (Sandbox Code Playgroud)

我还研究过将十进制转换为字节数组,然后转换为十六进制,但我也很简单.

c#

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

初学者问题(Python) - 如何在一定长度内从列表中删除单词

这就是我做的:

for word in doc:
    if len(word) < 3:
        doc.remove(word)
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做:

for word in doc:
    if len(word) < 3:
        print word
Run Code Online (Sandbox Code Playgroud)

返回的结果是:'O',''''30''''' '一世.' '如果'等等.

大多数两个角色项目被删除,但仍有一些仍然存在,我做错了什么?

python

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

如何使用C#从xml文件中删除所有空元素?

如何使用C#从XML文件中删除所有空元素?

例如:

输入

<Person>
  <PersonDetails>
    <Name>Some Name</Name>
    <Address>
      <Street>Some Street</Street>
      <City>Some City</City>
      <Zip/>
    </Address>
 </PersonDetails>
 <PersonDetails>
    <Name>Some Name</Name>
    <Address/>
 </PersonDetails>
 <PersonDetails/>
</Person>
Run Code Online (Sandbox Code Playgroud)

产量

<Person>
  <PersonDetails>
    <Name>Some Name</Name>
    <Address>
      <Street>Some Street</Street>
      <City>Some City</City>
    </Address>
 </PersonDetails>
 <PersonDetails>
    <Name>Some Name</Name>
 </PersonDetails>
</Person>
Run Code Online (Sandbox Code Playgroud)

c# xml

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

在C#中使用软连字符

我想使用C#在单词中的每个字母之间插入一个软连字符.例如,这里有一些文字:

Thisisatest => T-h-i-s-i-s-a-t-e-s-t

' - '是一个柔和的连字符.我怎么能在C#中做到这一点?我打算在网站上使用它.

注意:我在.NET 2.0上.

c# asp.net .net-2.0

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