netch80: (Default)
[personal profile] netch80

Кто с ходу увидит ошибку?

    for i in range(0,3):                                                    
        test.acct_servers[i].handleAcctRequest = \                          
                lambda p: handleAcctRequest(test, test.acct_servers[i], p)  

Получившие данную шишку на лбу понимают, почему для порождения замыкания надо рисовать отдельную функцию.

UPD[2012-07-05]: от gegmopo4:
... lambda p, i=i: (далее по тексту)
Работает, но я не берусь отправлять такое в общее репо.

Date: 2012-07-04 12:27 pm (UTC)
From: [identity profile] p1r4nh4.livejournal.com
Оно нигде так не ожидается и в большом количестве языков так работает - питон, руби, луа, го, кого я там еще забыл. Раздражает, конечно.

Date: 2012-07-04 01:02 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Это причина, почему в Java в анонимных классах доступны только финализированные внешние переменные и почему в C++11 у лямбд такой относительно громоздкий синтаксис.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 02:17 pm
Powered by Dreamwidth Studios