Selasa, 03 Juli 2012

Python - Alternatif perintah switch

Bahasa pemrograman Python tidak mendukung perintah pencabangan switch sebagaimana perintah pencabangan switch di bahasa lain, misalnya di PHP seperti berikut :
    switch($q) {
        case "all" :
            $users = get_all_user();
            break;
        case "admin" :
            $users = get_admin_user();
            break;
        case "staff" :
            $users = get_staff_user();
            break;
        default:
            $users = get_all_user();
            break;
    }
Di Python kita bisa menggunakan Python Dictionary dan perintah Lambda untuk membuat perintah seperti pencabangan switch pada bahasa lain, sebagai contoh :
    filter = request.GET.get('q', 'all')
    users = {
        "all" : lambda : User.objects.filter('all'),
        "admin" : lambda : User.objects.filter('admin'),
        "staff" : lambda : User.objects.filter('staff'),
        "user" : lambda : User.objects.filter('user')
    }[filter]()
Lambda merupakan perintah untuk membuat fungsi anonim yang menghasilkan objek dari perintah Lambda. Perintah seperti di atas seharusnya lebih efisien dibanding kita membuat pencabangan if yang harus memeriksa kondisi satu persatu.

Ya tho? :D

Tidak ada komentar:

Posting Komentar