ສ້າງລາຍການ Iterators ດ້ວຍ Linux "foreach" ຄໍາສັ່ງ

ໃນເວລາທີ່ ການຂຽນໂປຼແກຼມ , ຄໍາສັ່ງ foreach ປະຕິບັດການ loop ທີ່ຕົວແປ loop ສົມມຸດວ່າຄ່າຈາກຫນຶ່ງຫຼືຫຼາຍລາຍການ. ໃນກໍລະນີທີ່ງ່າຍທີ່ສຸດ, ມີການປ່ຽນແປງວົງຈອນຫນຶ່ງ, varname , ແລະບັນຊີລາຍຊື່ຫນຶ່ງ, ບັນຊີລາຍການ , ເຊິ່ງເປັນບັນຊີລາຍຊື່ຂອງຄ່າທີ່ຈະມອບໃຫ້ກັບ varname . ການໂຕ້ຖຽງ ຂອງຮ່າງກາຍ ແມ່ນ script Tcl. ສໍາລັບແຕ່ລະອົງປະກອບຂອງ ບັນຊີ (ຕາມລໍາດັບຈາກຄັ້ງທໍາອິດເຖິງສຸດທ້າຍ), foreach ມອບເນື້ອຫາຂອງອົງປະກອບໃຫ້ varname ຄືກັບວ່າຄໍາສັ່ງ lindex ຖືກນໍາໃຊ້ເພື່ອສະກັດອົງປະກອບ, ຫຼັງຈາກນັ້ນໂທຫາຕົວແປ Tcl ເພື່ອປະຕິບັດ ຮ່າງກາຍ .

Synopsis

foreach varname list body
foreach varlist1 list1 ? varlist2 list2 ... ? ຮ່າງກາຍ

ການສົນທະນາ

ໃນກໍລະນີທົ່ວໄປ, ມີບັນດາລາຍະການມູນຄ່າຫຼາຍກວ່າຫນຶ່ງ (ເຊັ່ນ: list1 ແລະ list2 ), ແລະບັນຊີລາຍຊື່ມູນຄ່າສາມາດເຊື່ອມໂຍງກັບບັນຊີລາຍການຂອງຕົວແປ loop (ຕົວຢ່າງ, varlist1 ແລະ varlist2 ). ໃນລະຫວ່າງການ iteration ຂອງ loop ແຕ່ລະຕົວແປຂອງແຕ່ລະ varlist ແມ່ນໄດ້ມອບຄ່າຕໍ່ເນື່ອງຈາກ ບັນຊີລາຍຊື່ ທີ່ສອດຄ້ອງກັນ. ມູນຄ່າໃນແຕ່ລະ ບັນຊີ ແມ່ນຖືກນໍາໃຊ້ໂດຍຄໍາສັ່ງຈາກຄັ້ງທໍາອິດໄປຈົນສຸດທ້າຍ, ແລະຄ່າໃຊ້ຈ່າຍແຕ່ລະຄັ້ງຖືກນໍາໃຊ້ຢ່າງແນ່ນອນ. ຈໍານວນຈໍານວນຂອງການເລີ່ມລວດຮອບແມ່ນໃຫຍ່ພໍທີ່ຈະໃຊ້ຄ່າທັງຫມົດຈາກທຸກລາຍະການມູນຄ່າ. ຖ້າລາຍະການມູນຄ່າບໍ່ມີອົງປະກອບພຽງພໍສໍາລັບແຕ່ລະວົງຂອງມັນໃນແຕ່ລະເທື່ອ, ຄ່າຫວ່າງຈະຖືກນໍາໃຊ້ສໍາລັບອົງປະກອບທີ່ຂາດຫາຍໄປ.

ຂໍ້ກໍານົດການ ຢຸດພັກ ແລະການ ສືບຕໍ່ ອາດຈະຖືກເອີ້ນໃນ ຮ່າງກາຍ , ມີຜົນກະທົບດຽວກັນກັບຄໍາສັ່ງ ສໍາລັບ ຄໍາສັ່ງ. oreach f returns a string empty.

ຕົວຢ່າງ

loop ຕໍ່ໄປນີ້ໃຊ້ i ແລະ j ເປັນ loop variables ເພື່ອ iterate over pair of elements ຂອງບັນຊີດຽວ.

ກໍານົດ x {} foreach {ij} {abcdef} {lappend x $ j $ i} # ຄ່າຂອງ x ແມ່ນ "badcfe" # ມີ 3 iterations ຂອງ loop.

loop ຕໍ່ໄປນີ້ໃຊ້ i ແລະ j ເພື່ອເຮັດເລື້ອງສອງລາຍໃນຂະຫນານ.

ກໍານົດ x {} foreach i {abc} j {defg} {lappend x $ i $ j} # ຄ່າຂອງ x ແມ່ນ "adbecf {} g" # ມີ 4 iterations ຂອງ loop.

ຮູບແບບສອງປະກອບດ້ວຍຕົວຢ່າງຕໍ່ໄປນີ້.

ກໍານົດ x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k} # ຄ່າຂອງ x ແມ່ນ "adebfgc {} {}" # ມີ 3 iterations ຂອງ loop.

ຫມາຍເຫດ

ຄໍາສັ່ງທີ່ກ່ຽວຂ້ອງຈໍານວນຫນຶ່ງເຮັດວຽກກັບ foreach ລວມທັງ:

ເນື່ອງຈາກ ລະດັບການແຈກແຈງ Linux ແລະລະດັບ kernel-release ແຕກຕ່າງກັນ, ໃຊ້ຄໍາສັ່ງ man ( % man ) ເພື່ອເບິ່ງວ່າຄໍາສັ່ງຖືກນໍາໃຊ້ຢ່າງໃດໃນ ຄອມພິວເຕີ້ ໂດຍສະເພາະຂອງທ່ານ.