# การใช้งาน Array 2D ในภาษา Haskell ทำได้ง่ายขึ้น กับตัวอย่างโค้ดที่คุณต้องรู้!
Haskell เป็นภาษาการเขียนโปรแกรมที่แสดงความสามารถในรูปแบบฟังก์ชันล์ (Functional Programming) ซึ่งหลายครั้งอาจดูประหลาดตาสำหรับนักพัฒนาที่รู้จักกันดีในภูมิแนวคิดแบบ OOP (Object-Oriented Programming) หนึ่งในเรื่องที่น่าสนใจใน Haskell คือการจัดการกับข้อมูลประเภท Array โดยเฉพาะ Array 2D ที่ใช้ประสบการณ์ในหลายๆ อุตสาหกรรม ในบทความนี้เราจะมาทำความรู้จักกับ Array 2D ใน Haskell พร้อมกับตัวอย่างโค้ดสามตัวอย่าง ที่จะช่วยให้คุณเข้าใจวิธีการทำงานอย่างมีเหตุผล และลองคิดถึง usecase ในโลกจริงที่สามารถนำไปประยุกต์ใช้ได้ด้วยความครอบคลุมและข้อมูลจากเราที่ EPT ซึ่งพร้อมพาคุณก้าวเข้าสู่โลกการเขียนโปรแกรมได้อย่างมั่นใจ!
ใน Haskell, Array 2D สามารถถูกแสดงการใช้งานผ่าน library เช่น Data.Array ซึ่งเราสามารถใช้สำหรับการสร้าง Array 2D ได้ดังนี้:
import Data.Array
-- สร้าง array 2D ขนาด 2x3
array2D :: Array (Int, Int) Int
array2D = array ((1,1), (2,3)) [((1,1), 1), ((1,2), 2), ((1,3), 3),
((2,1), 4), ((2,2), 5), ((2,3), 6)]
-- ตัวอย่างการเข้าถึงข้อมูล
getElement :: (Int, Int) -> Int
getElement (i,j) = array2D ! (i, j)
ในตัวอย่างนี้, เราสร้าง array2D ที่มีสองแถวและสามคอลัมน์ ซึ่งค่าถูกกำหนดให้กับแต่ละสัมประสิทธิ์ (i, j) และการเข้าถึงข้อมูลใน array ใดๆ สามารถทำได้โดยใช้ operator `!`
การทำงานกับ array 2D อาจรวมถึงการแปลงหรือการประมวลผลค่า:
-- การแมพฟังก์ชันไปยัง array 2D
mapArray2D :: (Int -> Int) -> Array (Int, Int) Int -> Array (Int, Int) Int
mapArray2D f arr = array (bounds arr) [((i, j), f (arr ! (i, j))) | (i, j) <- range (bounds arr)]
ในโค้ดตัวอย่างนี้ `mapArray2D` รับฟังก์ชัน `f` และ `array 2D` เพื่อสร้าง array ใหม่ที่มีค่าถูกประมวลผลภายใต้ฟังก์ชัน `f`
บางครั้งคุณอาจต้องการจัดการกับช่องว่างใน array:
-- การจัดการกับช่องว่างของ array 2D
fillEmpty :: Array (Int, Int) (Maybe Int) -> Array (Int, Int) (Maybe Int)
fillEmpty arr = arr // [((i, j), Just 0) | ((i, j), Nothing) <- assocs arr]
โค้ดนี้แสดงการใช้ array 2D ที่สามารถมีช่องว่าง (ค่า `Nothing`) และเราจึงเติมช่องว่างเหล่านั้นด้วยค่า 0 (ค่า `Just 0`).
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: haskell array_2d functional_programming data.array แนวคิด_oop library ข้อมูลประเภท_array ประสบการณ์ในอุตสาหกรรม การสร้าง_array_2d การเข้าถึงข้อมูล การทำงานกับ_array_2d การแปลงค่า การประมวลผลข้อมูล การจัดการกับช่องว่าง ฟังก์ชัน ช่องว่างใน_array
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com