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 — นักพัฒนาของมันตอบสนองอย่างแข็งขันและเพิ่มฟีเจอร์ใหม่ๆ โดยอิงจากความคิดเห็นของชุมชน