Fish Shell:
การใช้แอเรย์สมาชิก
วิธีการ:
Fish ไม่มีการสนับสนุนอาร์เรย์เชิงสัมพันธ์โดยตรงเหมือน Bash 4+ แต่คุณสามารถบรรลุฟังก์ชันคล้ายกันโดยใช้การผสมผสานระหว่างรายการและการจัดการสตริง นี่คือวิธีการเลียนแบบมัน:
ขั้นตอนแรก การตั้งค่า “อาร์เรย์เชิงสัมพันธ์” แยกกัน:
set food_color_apple "red"
set food_color_banana "yellow"
ในการเข้าถึงองค์ประกอบ เพียงแค่อ้างอิงโดยตรง:
echo $food_color_apple
# ผลลัพธ์: red
หากคุณต้องการทำซ้ำผ่านพวกเขา ใช้ for-loop โดยคำนึงถึงการกำหนดชื่อ:
for food in apple banana
echo $food_color_$food
end
# ผลลัพธ์:
# red
# yellow
สำหรับผู้ที่ขาดการใช้ ${!array[@]}
ของ Bash เพื่อรับทุกคีย์ คุณสามารถเก็บคีย์ในรายการแยกต่างหากได้:
set food_keys apple banana
for key in $food_keys
echo $key 'คือ' $food_color_$key
end
# ผลลัพธ์:
# apple คือ red
# banana คือ yellow
ลงลึก
อาร์เรย์เชิงสัมพันธ์อย่างแท้จริงตามที่มีในภาษาสคริปต์อื่นๆ ยังไม่ถูกรวมเป็นส่วนหนึ่งของการเข้าหาของ Fish วิธีการแก้ปัญหาที่แสดงช่วยให้สามารถใช้ความสามารถในการจัดการสตริงและความสามารถของรายการของ Fish เพื่อสร้างโครงสร้างอาร์เรย์เชิงสัมพันธ์เทียม แม้จะใช้งานได้ แต่ก็ไม่ได้เรียบง่ายหรือป้องกันข้อผิดพลาดเหมือนกับการมีการสนับสนุนอาร์เรย์เชิงสัมพันธ์เป็นส่วนหนึ่งอย่างแท้จริง ซอฟต์แวร์อื่นๆ เช่น Bash และ Zsh ให้ฟังก์ชันการทำงานอาร์เรย์เชิงสัมพันธ์เป็นส่วนหนึ่ง ซึ่งส่งผลให้โค้ดง่ายต่อการอ่านและเข้าใจมากขึ้น อย่างไรก็ตาม ปรัชญาการออกแบบของ Fish มุ่งเน้นไปที่ความเรียบง่ายและความสะดวกสำหรับผู้ใช้ อาจเป็นการละเว้นคุณสมบัติเช่นนี้ วิธีการแก้ปัญหาที่นำเสนอนั้นตอบสนองความต้องการส่วนใหญ่ แต่ต้องจับตาดูการพัฒนาของ Fish Shell — นักพัฒนาของมันตอบสนองอย่างแข็งขันและเพิ่มฟีเจอร์ใหม่ๆ โดยอิงจากความคิดเห็นของชุมชน