标签: block

@instance_variable在红宝石块内不可用?

使用以下代码:

def index
  @q = ""
  @q = params[:search][:q] if params[:search]
  q = @q
  @search = Sunspot.search(User) do
    keywords q
  end
  @users = @search.results
end
Run Code Online (Sandbox Code Playgroud)

如果使用@q而不是q,则搜索始终返回空查询("")的结果.为什么是这样?@q变量是否对do ... end块不可用?

ruby scope block instance

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

Ruby块,procs和instance_eval

我最近尝试做类似于此的事情:

a = "some string"
b = Proc.new{ upcase }
a.instance_eval b
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

TypeError:无法将Proc转换为String

但这有效:

def b(&block)
  "some string".instance_eval &block
end

b{ upcase }
Run Code Online (Sandbox Code Playgroud)

进一步了解这种方法:

def b(&block)
  "some string".instance_eval block
end
Run Code Online (Sandbox Code Playgroud)

产生相同的Proc to String错误.

所以...我对块的理解是它们只是触发器.但是这个&&符号显然有一些特别之处......

谁可以给我解释一下这个?是否有可能将正常的proc转换成&block对象的特殊之处?

编辑

刚刚想出了我的第二个问题,在前面加了一个&...这很容易,但这是真的在做什么?

ruby lambda block proc-object

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

为什么我们在@synchronized块中传递self?

我想@synchronized块不依赖于对象,但依赖于线程......对吗?在那种情况下,为什么我们通过自我?

macos synchronization block objective-c ios

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

在ruby中阻止范围

我的理解是ruby块具有块范围,并且块内创建的所有变量将仅在块内生存.

示例案例:

 food = ['toast', 'cheese', 'wine']
 food.each { |food| puts food.capitalize}
 puts food
Run Code Online (Sandbox Code Playgroud)

输出:

"Toast"
"Cheese"
"Wine"
"Wine"
Run Code Online (Sandbox Code Playgroud)

如果你把food块中的变量(每个块),我的理解是它有块范围.它仅存在于块范围内,并且对外部变量没有任何影响food.

但行为不同,food在这种情况下修改了名为的外部变量.这种理解是否正确,在ruby中我们是否有块范围?

ruby scope block variable-assignment

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

Django - 在几个模板中"包含"一个块?模板标签?别的什么?

我有一个小的统计数据块,我想在几个地方可用:用户的个人资料页面和一个用户列表的搜索页面.

重复这个区块的最佳方法是什么?我来自PHP背景,在PHP中,它将是一个简单的包含传递一些简单的参数.在django中,我基本上希望能够调用类似于:

 {% stats_block user %}
Run Code Online (Sandbox Code Playgroud)

其中user是包含所有用户信息的对象.我在想一个简单的模板标签,但是这个块非常大,我不想把eveything放在模板标签的一行中.

非常感谢!

django block django-templates

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

块内函数的返回值

我正在使用AFNetworking从服务器获取数据:

-(NSArray)some function {
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
        success: ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
            NSArray *jsonArray =[JSON valueForKey:@"posts"];
        }
        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {}
}
Run Code Online (Sandbox Code Playgroud)

所以我在这里要做的是将jsonArray返回给函数.显然返回不起作用.

block objective-c afnetworking

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

如何使用AFNetworking跟踪多个同时下载的进度?

我正在使用AFNetworking下载我的应用程序用于同步解决方案的文件.在某些时候,应用程序会将一系列文件作为批处理单元下载.按照这个例子,我像这样运行批处理:

NSURL *baseURL = <NSURL with the base of my server>;
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];

// as per: https://stackoverflow.com/a/19883392/353137
dispatch_group_t group = dispatch_group_create();

for (NSDictionary *changeSet in changeSets) {
    dispatch_group_enter(group);

    AFHTTPRequestOperation *operation =
    [manager
     POST:@"download"
     parameters: <my download parameters>
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         // handle download success...
         // ...
         dispatch_group_leave(group);

     }
     failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         // handle failure...
         // ...
         dispatch_group_leave(group);
     }];
    [operation start];
}
// Here we wait for all the requests to …
Run Code Online (Sandbox Code Playgroud)

block batch-processing ios mbprogresshud afnetworking-2

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

为什么转换CUDA网格(但不是它的线程块)仍然会减慢计算速度?

编辑:似乎,至少在这种情况下,转置网格对L2缓存带宽有负面影响.这是从视觉分析器获得的.原因尚不清楚.

我已经到了需要转置CUDA网格的GPU计算情况.因此,如果block_ {x,y}最初作用于数据区域d_ {x,y},则它现在作用于数据区域d_ {y,x},因此block_ {y,x}将作用于数据区域d_ {x, y}.下图显示了一个示例. 在此输入图像描述

值得一提的是,线程不会在每个块内部进行转置,也就是说,一旦定位了块,threadIdx.xthreadIdx.y值分别以正常方式用于它们的x和y偏移.

据我所知,理论上这个设计应该不会对性能产生任何影响,因为内存合并模式仍然保留,即块内的线程没有转置,只是网格重新排列其块.但是我发现在转置网格时,内核运行大约.比正常情况慢2倍.我做了一个玩具示例来说明情况.

?  transpose-grid ./prog 10000 10000 100 0
init data.....................done: zero matrix of 10000 x 10000
copy data to GPU..............done
preparing grid................done: block(32, 32, 1), grid(313, 313, 1)
normal_kernel (100 rep).......done: 0.935132 ms
verifying correctness.........ok
?  transpose-grid ./prog 10000 10000 100 1
init data.....................done: zero matrix of 10000 x 10000
copy data to GPU..............done
preparing grid................done: …
Run Code Online (Sandbox Code Playgroud)

c++ performance cuda block slowdown

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

NSTimer与块 - 我做得对吗?

以下是我在NSTimer上的Objective-C类别,用于对NSTimers进行基于块的触发.我看不出它有什么问题,但我得到的是我传入schedule...方法的块正在被解除分配,尽管我要求copy它.

我错过了什么?

typedef void(^NSTimerFiredBlock)(NSTimer *timer);

@implementation NSTimer (MyExtension)

+ (void)timerFired:(NSTimer *)timer 
{
    NSTimerFiredBlock blk = timer.userInfo;
    if (blk != nil) {
        blk(timer);
    }
}

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds 
                                    repeats:(BOOL)repeats 
                                   callback:(NSTimerFiredBlock)blk 
{
    return [NSTimer scheduledTimerWithTimeInterval:seconds
                                            target:self
                                          selector:@selector(timerFired:)
                                          userInfo:[blk copy]
                                           repeats:repeats];
}

@end
Run Code Online (Sandbox Code Playgroud)

block objective-c automatic-ref-counting

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

什么是开始...结束于Erlang用于?

我只是begin...end在Erlang的文档(这里)中踩了一脚,但它没有给出一些如何有用的例子.

在StackOverflow中查看我发现了两个人们将要使用的情况begin...end,两者都在列表推导中:

但我想知道是否有更多此类用途.

任何人都可以提供另一种方案,其中a begin...end在Erlang中有用吗?

谢谢

erlang expression block

12
推荐指数
3
解决办法
2714
查看次数