草庐IT

c# - 在初始化惰性实例时将参数传递给构造函数

publicclassmyClass{publicmyClass(StringInstanceName){Name=InstanceName;}publicStringName{get;set;}}//NowusingmyClasslazilyIhave:LazymyLazy;Console.WriteLine(myLazy.Value.Name);我的问题是当我们使用惰性实例时如何将InstanceName传递给myClass构造函数? 最佳答案 试试这个:LazymyLazy=newLazy(()=>newmyClass(Ins

javascript - 表达式的 Angular 惰性一次性绑定(bind)

AngularJS自1.3.0-beta.10版本以来有一个新特性:"lazyone-timebinding".简单的表达式可以用::作为前缀,告诉angular在表达式第一次求值后停止监视。给出的常见示例如下:{{::user.name}}是否有类似以下表达式的语法? 最佳答案 是的。您可以为每个表达式添加前缀::,甚至是ngIf或ngClass中的表达式:实际上,thecode只需检查表达式中的前两个字符是否为:以激活一次性绑定(bind)(然后删除它们,因此甚至不需要括号)。其他一切都保持不变。

c++ - C++ 中的共享、弱指针和惰性指针

是否有人知道shared_ptr和weak_ptr以及惰性初始化伙伴的实现?类(class)的要求是:一个lazy_ptr类,允许客户端稍后(如果有的话)构造对象,而不需要构造函数实现一个weak_lazy_ptr类具有三种可能的状态:尚未构造(不会锁定到shared_ptr)、构造(将锁定到shared_ptr)并销毁(不会锁定到shared_ptr)我创建了一些不久前没有完全完成工作的类(seeCVuarticlehere),它们在实现中使用了shared_ptr和weak_ptr。使用共享指针和弱指针而不是与它们集成的模型的主要问题如下:一旦所有lazy_ptr对象超出范围,任何

c++ - C++/Haskell 中的精确算术和惰性列表性能

在阅读thispaper后,我最近遇到了精确实数运算这一主题。和thispaper.我找到了许多讨论使用有符号数字流实现精确算术的论文。对任意精度使用无限流可以在函数式语言(如Haskell)中使用惰性列表实现很好的实际实现。但是,讨论函数式语言中此类实现的论文似乎得出的结论是性能非常差。现在,我意识到与标准浮点表示相比,精确的非硬件实现通常具有相对较差的性能,但我有兴趣以命令式语言(特别是C++)和运算/函数的集合(算术运算、三角函数、exp、log等)。我的问题:有符号数字/惰性流表示是否存在固有的缓慢导致性能不佳的问题,还是Haskell?是什么让它变慢?是否有可能在C++中使用

c++ - 一种在 C++ 中实现惰性求值的方法

所以我回答了一个关于惰性求值的问题(here,我的回答对于这种情况来说有点矫枉过正,但这个想法似乎很有趣),这让我想到了如何在C++中进行惰性求值。我想出了一个方法,但我不确定其中的所有陷阱。还有其他实现惰性评估的方法吗?如何做到这一点?有哪些陷阱以及这个和其他设计?这是我的想法:#include#include#include#include#defineLAZY(E)lazy{[&](){returnE;}}templateclasslazy{private:typedefstd::function()>thunk_type;mutablestd::shared_ptrthunk_

c++ - 有 C++ 惰性指针吗?

我需要一个类似shared_ptr的对象,但是当我尝试访问它的成员时它会自动创建一个真实的对象。例如,我有:classBox{public:unsignedintwidth;unsignedintheight;Box():width(50),height(100){}};std::vector>boxes;boxes.resize(100);//atthispointboxescontainnoanyrealBoxobject.//ButwhenItrytoaccessboxnumber50,forexample,//itwillbecreated.std::cout是否有一些实现,或

c++ - 线程安全的惰性初始化:静态vs std::call_once vs双重检查锁定

对于线程安全的惰性初始化,应该在函数std::call_once还是显式的双重检查锁定中首选静态变量?有什么有意义的区别吗?这三个问题都可以看到。Double-CheckedLockSingletoninC++11在Google中出现了两种版本的C++11中的双重检查锁定。AnthonyWilliamsshows都使用显式的内存顺序和std::call_once仔细检查了锁定。他没有提到static,但是该文章可能是在C++11编译器可用之前写的。JeffPreshing在广泛的writeup中描述了双重检查锁定的几种变体。他的确提到使用静态变量作为选项,甚至展示了编译器将生成用于双重

c++ - std::optional::value_or() - 惰性参数评估

是否有可能以惰性方式评估std::optional::value_or(expr)参数,因此expr仅在没有的情况下计算值(value)?如果不是,什么是合适的替代品? 最佳答案 #includetemplatestructLazy{Ff;operatordecltype(f())()const{returnf();}};templateLazy(Ff)->Lazy;intmain(){std::optionalo;inti=o.value_or(Lazy{[]{return0;}});}DEMO

python - 如何在 C 中实现惰性求值?

举个例子,以下python代码:defmultiples_of_2():i=0whileTrue:i=i+2yieldi我们如何将其翻译成C代码?编辑:我希望将这个python代码翻译成一个类似的C生成器,带有next()函数。我不是在寻找如何在C中创建一个函数来输出2的倍数。2的倍数只是说明C中惰性eval生成器问题的一个示例。 最佳答案 您可以尝试将其封装在struct中:typedefstructs_generator{intcurrent;int(*func)(int);}generator;intnext(generato

python - 惰性模块变量——可以吗?

我正在尝试找到一种延迟加载模块级变量的方法。具体来说,我编写了一个小型Python库来与iTunes通信,并且我想要一个DOWNLOAD_FOLDER_PATH模块变量。不幸的是,iTunes不会告诉你它的下载文件夹在哪里,所以我编写了一个函数来抓取一些播客轨道的文件路径并爬回目录树,直到找到“下载”目录。这需要一两秒,所以我希望延迟评估它,而不是在模块导入时。有什么方法可以在第一次访问模块变量时懒惰地分配它,还是我必须依赖一个函数? 最佳答案 你不能用模块来做到这一点,但你可以把一个类伪装成“好像”它是一个模块,例如,在itun.