我有:
main :: IO ()
main = do
iniciofibonaccimap <- getCPUTime
let fibonaccimap = map fib listaVintesete
fimfibonaccimap <- getCPUTime
let difffibonaccimap = (fromIntegral (fimfibonaccimap - iniciofibonaccimap)) / (10^12)
printf "Computation time fibonaccimap: %0.3f sec\n" (difffibonaccimap :: Double)
listaVintesete :: [Integer]
listaVintesete = replicate 100 27
fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Run Code Online (Sandbox Code Playgroud)
但
*Main> main
Computation time fibonaccimap: 0.000 sec
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.帮帮我谢谢.
嘿,我想知道是否有人能指出我如何在ASP.NET 2.0中使用Bit.ly API的一些例子
我怎样才能在Delphi中模拟一个OnDestroy事件TFrame?
我简单地添加了一个constructor和destructor我的框架,认为这是做什么的TForm:
TframeEditCustomer = class(TFrame)
...
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
...
end;
constructor TframeEditCustomer.Create(AOwner: TComponent)
begin
inherited Create(AOwner);
//allocate stuff
end;
destructor TframeEditCustomer.Destroy;
begin
//cleanup stuff
inherited Destroy;
end;
Run Code Online (Sandbox Code Playgroud)
这个问题是,当我的析构函数运行时,框架上的控件已经被破坏并且不再有效.
原因在于包含表单的析构函数,它用于触发OnDestroy事件:
destructor TCustomForm.Destroy;
begin
...
if OldCreateOrder then DoDestroy; //-->fires Form's OnDestroy event; while controls are still valid
...
if HandleAllocated then DestroyWindowHandle; //-->destroys all controls on the form, and child frames
...
inherited …Run Code Online (Sandbox Code Playgroud) 我已经远远地搜索了将.hta文件(和资源)编译为.exe文件的方法.
有很多应用程序声称能够做到这一点 - 但他们没有为这个应用程序工作 - 这是javascript和VB的混合.
简单地说,(并且天真地),我不希望人们看到/搞砸代码.任何建议或解决方案将不胜感激.
编辑:当然,我知道javascript和VB不是"可编译的",因为它们是解释型语言.我只是在寻找一种真正隐藏源头的方法.
我有一个带有两个重载的方法,如下所示:
bool Evaluate(Func<bool> condition)
{
// Some logic
return condition.Invoke();
}
bool Evaluate<T>(Func<T, bool> condition, T value)
{
// Same logic as the first method overload
return condition.Invoke(value);
}
Run Code Online (Sandbox Code Playgroud)
由于两个方法重载都包含大致相同的逻辑,我希望将它们链接在一起,但我看不到如何做到这一点.我想第一个方法overoad需要构造一个委托,它传递给第二个重载,但是不清楚这个委托应采取什么形式.
非常感谢你的建议,
蒂姆
我们对.vcproj进行了更改,以修复构建计算机上的问题(变更集1700).后来,开发人员将他的更改(更改1710到1715)合并到主干中,但mercurial自动合并覆盖了1700的更改.我认为这是因为他选择了错误的分支作为合并的"父"(请参阅部分2问题).
1)解决这个问题的"正确"的方法是什么,考虑到所有合并的文件,只有一个文件被错误地合并,
2)开发人员应该采取哪些不同的措施以确保不会发生这种情况?我们有办法实施"正确"的方式吗?
编辑:我可能对发生的事情不够清楚.Developer A在我们的.vcproj文件中修改了一行,删除了编译器的选项.他的签到变成了1700.开发人员B,从前一个父母(比如变更集1690)开始,对项目的完全不同的部分进行了一些更改,但他确实触摸了.vcproj文件(只是没有接近所做的更改)由开发人员A).当开发人员B合并他的更改(变为1710到1715)时,合并过程会覆盖1700的更改.
为了解决这个问题,我只是重新修改.vcproj文件以再次包含更改,并将其检入.我只是想知道为什么 Mercurial认为它不应该在1700中保留更改,以及是否存在解决这个问题的"官方"方式.
编辑第二个:开发人员B发誓Mercurial合并了.vcproj文件而没有提示他解决冲突,但当然可能他只是记错了,在这种情况下,整个练习都是学术性的.
我已经选择了类似以下的SQL:
IF EXISTS(SELECT name FROM tempdb..sysobjects WHERE name Like N'#tmp%'
and id=object_id('tempdb..#tmp'))
DROP TABLE #tmp
into #tmp
select * from permTable
Run Code Online (Sandbox Code Playgroud)
我需要在继续处理之前向#tmp添加更多数据:
insert into #tmp
select * from permTable2
Run Code Online (Sandbox Code Playgroud)
但这会产生错误,因为SQL假设#tmp列的大小和类型(例如,如果permTable有一个列为int的列,但permTable2的列具有相同的名称但在一个记录中有一个NULL,则"无法将值插入列中" IsPremium',表'tempdb.dbo.#tmp").
如何让#tmp拥有我想要的类型?这真是不好的做法吗?
我尝试在SQLite数据库上运行更新查询时收到此错误.这只发生在XP上(在Vista上工作正常).创建数据库没有任何问题,插入也工作正常.我也检查过,我有权限和磁盘空间可用(因为sqlite.org说这些是可能的原因).
我很想知道联盟是否比运行多个查询更好.
如果是这样,是否有时候由于其他原因,多个查询会更快或更受欢迎?