小编Ben*_*jol的帖子

Perl:如何"死",没有错误信息?

我在perl中运行一个简单的文件测试,代码如下:

my $f1 = "$pre_file";

 unless (-e $1) {

 print "\n Pre_check file does not exists! \n";

 die;

 } 
Run Code Online (Sandbox Code Playgroud)

它打印以下输出:

Pre_check文件不存在!
死于./huawei-postcheck第81行.

但是我不希望最后一行"死于./huawei-postcheck第81行".

我想"死",没有错误信息.

可能吗?

perl die

3
推荐指数
4
解决办法
5302
查看次数

包装慢速同步I/O以实现异步UI消耗

我有一个外部库,它可以减慢I/O(串行+无线等),在API中没有异步(甚至是旧式).

我正在尝试找到一种方法来包装它以便从UI轻松消费,这样我的用户就可以在没有整个UI冻结的情况下进行连接,最好是我可以async-await这样做.

但我正在阅读相互矛盾的建议,例如"仅使用Task.Run进行CPU绑定操作".

所以我该怎么做?刚async-awaitTask.Run(省略ConfigurAwait(false)),或实现一个整体INotifyCompletion

c# wpf task mvvm async-await

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

救命!Math.PI在F#CTP中去了哪里?

我只是想用F#做简单的脚本编写,而Math.PI似乎已经"消失了".我引用了FSharp.PowerPack.dll,但仍然无法找到它.

math f#

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

"有一个"vs"是一个" - 代码味道决定

我昨天在一个继承自Bar的Foo类中写了这个:

public override void AddItem(double a, int b)
{
    //Code smell?
    throw new NotImplementedException("This method not usable for Foo items");
}
Run Code Online (Sandbox Code Playgroud)

随后想知道这是否可能表明我应该使用 Bar,而不是继承它.

还有哪些"代码味道"可以帮助在继承和组合之间做出选择?

编辑我要补充一点,这是一个片段,还有其它方法相同之处,我只是不想去考虑太多的细节.我必须分析切换到合成的含义,并想知道是否可能有其他"代码味道"可能有助于提高平衡.

oop inheritance composition

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

什么是最"轻量级"的winforms控件?

(这可能是一个愚蠢的问题和WTF的结合,但这里什么都没有)

我想在我的界面中"绘制"线条或区域 - 通常是TableLayoutPanel内的分隔符.目前我所做的只是将一个Panel转储到行中并将其设置为Dock = Fill并为其提供所需的背景颜色.

在做同样的事情之前,我想知道另一个控件(Label?)是否可能更轻量级.或者也许我应该通过继承自己来推动自己?

还有其他方法吗?

winforms

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

F#相当于toLookup

鉴于这种:

[
    ("A","A122");
    ("A","A123");
    ("B","B122");
    ("B","B123");
    ("C","C122");
]
Run Code Online (Sandbox Code Playgroud)

是否有标准功能来实现这一目标?

[
    ("A",["A122";"A123"]);
    ("B",["B122";"B123"]);
    ("C",["C122"])
]
Run Code Online (Sandbox Code Playgroud)

我想到了Seq.distinctBy,List.partition,Set,Map,但它们似乎都不是我想要的.

谢谢...在我等待的时候,我会尝试自己动手:)

lookup f#

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

未知需要类型注释或强制转换

我知道我必须遗漏一些非常明显的东西.B.GetInstance().Call()生成错误:根据此程序点之前的信息查找不确定类型的对象.在此程序点之前可能需要类型注释来约束对象的类型.这可以允许解析查找.

我正在使用v1.9.9.9.

type A() =
    member x.Call() = B.GetInstance().Call()

and B() =
    static member GetInstance() = new B()
    member x.Call() = ()
Run Code Online (Sandbox Code Playgroud)

我刚刚发现这个有效: (B.GetInstance() :> B).Call()

知道为什么演员是必要的吗?

f# type-inference

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

git知道合并后哪个分支是哪个?

很抱歉,如果这是一个愚蠢的问题只有一个是/否答案,但如果我理解正确,在git中,一个分支只是一个指向提交的指针.这是不是暗示一旦你合并了两个分支,git就不知道哪一个指向哪一组提交?

之前

A---B---C---D---E    <- X
 \                
  1----2----3----4   <- Y
Run Code Online (Sandbox Code Playgroud)

A---B---C---D---E--M  <-X & Y
 \                /
  1----2----3----4
Run Code Online (Sandbox Code Playgroud)

git merge branch

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

关闭范围和垃圾收集

我刚刚编写了一些代码来执行超时操作,如果异步任务需要很长时间才能处理,但我不清楚的是,是否以及什么时候超时实例将被处理掉(我认为它会在异步任务及时完成,但我不知道,或者如果我每次调用此代码时都要累积实例.

//StartNew creates a new instance of System.Timers.Timer, and 
//  invokes the ActionOnTimeout after 2000ms, unless calling code
//  calls "Stop" first
var timeout = ProcessTimeout.StartNew(() => ActionOnTimeout(), 2000);

//DoAsyncTask creates a new thread, does potentially slow stuff, 
///   then invokes this callback
DoAsyncTask(() => 
    {
         if(timeout.Running)
         {
             timeout.Stop();
             DoCallbackStuff();
         }
    });
Run Code Online (Sandbox Code Playgroud)

(如果有任何帮助,ProcessTimeout类使用a System.Timers.Timer)

c# lambda closures garbage-collection

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

如何在F#中使用System.Threading.Tasks?

我正在学习F#.最近,我读到了.NET 4.5关于任务的改进.所以,我看了一下如何在F#中使用它.在fsi中:

use System.Threading.Tasks
Parallel.ForEach([1;2],fun x->x+1);;
Run Code Online (Sandbox Code Playgroud)

给出了很多错误.

另外,在Fsharp核心库的源代码中.我看见:

module Parallel =
open System.Threading.Tasks

[<CompiledName("Choose")>]
let choose f (array: 'T[]) = 
  checkNonNull "array" array
  let inputLength = array.Length
  let lastInputIndex = inputLength - 1

  let isChosen : bool [] = //(Deliberately offside to avoid scrollbars)
       Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength
  let results : 'U [] = 
       Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked.为什么?我有:

错误FS1092:无法从此代码位置访问"Array"类型.

.net f#

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