LINUX.ORG.RU

хочу локальную функцию.

 ,


0

2
proc ::ds::Interpret_vtkCylinderSource {e} {
    set Name [dict get $e Name]
    set Class [dict get $e Class]
}

А хочу:

proc ::ds::Interpret_vtkCylinderSource {e} {
    proc g {key} ?????? 
    set Name [g Name]
    set Class [g Class]
}

Как сделать наименее извратно?

★★★★★

Последнее исправление: den73 (всего исправлений: 1)

Наверное, так:

proc ::ds::Interpret_vtkCylinderSource {e} {
    set g {dict get $e} 
    set Name [{*}$g Name]
    set Class [{*}$g Class]
}


Если у тебя Tcl 8.6 то можно ещё применить лямбду и apply

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

А это вообще считается нормой или извратом? В принципе, можно и без этого пережить, не так и больно.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

В этом случае, я считаю, что изврат, лучше оставить как есть, чем пытаться «оптимизировать», а если будет много таких мест, то можно же так:

proc ::ds::Interpret_vtkCylinderSource {e} {
    foreach attr {Name Class} {
        set $attr [dict get $e $attr]
    }
}

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.