草庐IT

lexical-closures

全部标签

c++ - 术语 "lexical"在 C++ 中意味着什么?

我读到有词法常量、词法运算符、词法范围等。术语“词法”如何改变常量(例如字符串文字)、任何运算符或某些标识符的范围的含义? 最佳答案 “词法”是指与源代码相关。例如,1是一个词法常量。OTOH,sizeof(char)也是编译时整数常量表达式,但它不是词法常量。从词法上讲,它是sizeof运算符的调用。词法运算符作用于源代码。预处理器运算符属于这一类。在大多数情况下,我在程序中的任何地方使用1还是sizeof(char)都没有区别。但是,作为词法运算符#或##的参数,它产生了相当大的差异,因为它们作用于实际代码而不是计算结果:#de

c++ - 启用用于 boost::lexical_cast 的类

来自lexical_cast的代码片段:classlexical_castable{public:lexical_castable(){};lexical_castable(conststd::strings):s_(s){};friendstd::ostreamoperator>(std::istream&i,lexical_castable&le);private:virtualvoidprint_(std::ostream&o)const{o>s_;}std::strings_;};std::ostreamoperator>(std::istream&i,lexical_cast

C++ 使用带有 boost::lexical_cast 的类

我想将我的测试类与boost::lexical_cast一起使用.我重载了operator和operator>>但它给了我运行时错误。这是我的代码:#include#includeusingnamespacestd;classTest{inta,b;public:Test(){}Test(constTest&test){a=test.a;b=test.b;}~Test(){}voidprint(){cout>(istream&input,Test&test){input>>test.a>>test.b;returninput;}friendostream&operator("102")

ios - Swift Closure 编译器错误

以下代码:varindex=0;for(uuid,type)inmap!{{(idx)in/*COMPILERERRORHERE*/dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),{Dashlet.build(self.selectedDashboard!.getUuid(),dashletUuid:uuid,type:type){(dashlet:Dashlet)inself.dashlets![idx]=dashlet;dispatch_async(dispatch_get_ma

closures - 为什么闭包中的 "unowned self"在 Swift 中不能正常工作?

Apple的Swift语言官方指南中的代码如下:classHTMLElement{letname:Stringlettext:String?@lazyvarasHTML:()->String={[unownedself]iniflettext=self.text{return"\(text)"}else{return""}}init(name:String,text:String?=nil){self.name=nameself.text=text}deinit{println("\(name)isbeingdeinitialized.")}}在闭包中使用带有unowned的捕获列表来

swift - 不明白这个 Trailing Closure

我是swift的新手。正在阅读weheartswift上的闭包。有一节讨论尾随闭包。这里有三个问题:我认为代码中存在一些拼写错误:函数不应该只是func吗?我认为{}中的3行代码只是f:(Int)->(Int)的尾随闭包,但是那3行代码中的f(i)是什么意思?当我尝试在playground中运行这段代码时,它在行中给出了这个错误:“returnsum”unexpectednon-voidreturnvalueinvoidfunction。代码:functionsum(from:Int,to:Int,f:(Int)->(Int)){varsum=0foriinfrom...to{sum+

swift - 如何处理 'Self captured by closure before being initialized'

假设我有一个结构如下:classA{classReadyHandler{//firesoffthecallbackwhenneededletcallback;init(callback:()->Void){self.callback=callback}}letreadyHandler:ReadyHandlerletready=falseinit(){readyHandler=ReadyHandler(callback:{self.ready=true})}}自然,问题是我正在尝试使用尚未初始化的self来初始化回调。如何避免循环引用和相应的错误? 最佳答案

swift 4 : Escaping closures can only capture inout parameters explicitly by value

我一直在将我的代码从Swift2迁移到Swift4。我有以下代码在Swift2中运行良好:funcfetchUserThumbnailAvatar(_task:inoutURLSessionTask?,completion:@escaping(_image:UIImage?)->()){fetchUserAvatar(Session.currentUser?.avatar?.thumbnailURLasURL???URL(string:"")!,externalUrl:URL(string:thumbnailAvatar)??URL(string:"")!,&task,completi

objective-c - Obj-C 到 Swift : Block to Closure/Delegate

保持ViewController精简并使用MVVMC帮助我更轻松地进行维护。Obj.io关于他们的site有一个很好的教程.不幸的是,该教程仅在Objective-C中。我正在尝试切换到Swift并且移动非常swift,直到我到达用于配置单元的block。在教程中,他们创建了一个blocktypedef:typedefvoid(^TableViewCellConfigureBlock)(idcell,iditem);在创建单元格时返回cellForRowAtIndexPath中的单元格。下面是一些代码,这里是整个项目:Projectvoid(^configureCell)(PhotoC

swift 泛型 : Custom closure with multiple arguments for filter function

我有一个缓存数组,可以存储不同类型的对象,如UIView、UICollectionReuableView等vararrCache=[AnyObject]()我想通过传递自定义闭包来使用内置过滤器函数过滤掉这些特定元素:privatefuncreusableViewsClosure(element:AnyObject,type:T)->Bool{returnelementisT?true:false}现在,当我在过滤器函数上调用这个闭包时,我得到一个错误说明leti=arrCache.filter(reusableViewsClosure(UIView))//错误:无法将调用结果类型bo