fall-through switch untuk mengeksekusi urutan langkah

9

Program saya perlu menjalankan urutan langkah dari awal hingga akhir. Tetapi berdasarkan input yang berbeda, titik awal akan bervariasi, misalnya, beberapa akan berjalan dari langkah pertama hingga akhir, beberapa akan berjalan dari langkah ke-2 sampai ke akhir, beberapa akan berjalan dari ke-3 ke ujung, dll.

Saya hanya perlu desain yang sederhana, saat ini saya menggunakan fall-through switch seperti ini:

switch (step) {
case 1:
     //do the 1st step
     //fall through, so no break here
case 2:
    //do the 2nd step
    //fall through
case 3:
    //do the 3rd step
    //fall through
...
}

Ini bekerja tetapi kode yang gagal selalu membuat saya tidak nyaman. Apakah ada cara yang lebih baik dan sederhana untuk melakukannya?

Qiulang
sumber
1
Anda tidak harus crosspost. Saya yakin pertanyaan Anda masuk akal di situs web ini, jadi jika saya adalah Anda, saya akan menghapus pertanyaan di Stack Overflow.
Vincent Savard
1
OK saya menghapusnya di SO dan memperbarui pertanyaan saya di sini juga. Terima kasih.
Qiulang
Apakah data yang diperlukan untuk setiap langkah sama? Bisakah Anda mengekstrak setiap langkah ke dalam fungsinya sendiri dengan argumen dan tipe pengembalian yang sama?
Greg Burghardt
tidak itu sebabnya solusi array mungkin tidak berlaku untuk kasus saya
Qiulang

Jawaban:

4

Bergantung pada bahasa yang Anda gunakan, Anda dapat membuat berbagai fungsi dan menggunakan stepsebagai titik awal untuk mengulanginya. Sesuatu seperti:

var functions = function[]
{
    step1,
    step2,
    step3,
    …
}

foreach (var index = step-1; index <= function.count; index++)
{
    functions[index]();
}
David Arno
sumber
Terima kasih, saat ini saya menggunakan javascript tapi saya pikir solusi Anda juga berlaku untuk c / c ++. Terima kasih!
Qiulang
Ini akan menjadi solusi ideal, selama input dan output masing-masing fungsi adalah sama.
Greg Burghardt
4

Cara Anda melakukannya sangat baik dan sederhana; itulah tujuan dari kesalahan itu sejak awal. Jika itu membuat Anda lebih nyaman, Anda dapat menambahkan komentar yang menjelaskan apa yang Anda lakukan (sehingga orang lain tidak membutuhkan waktu setengah jam untuk memahami mengapa hal itu terjadi).

Min4Builder
sumber