DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

ลองติดตั้งและใช้ Elixir เบื้องต้น (just print "Hello, World")

Elixir เป็นภาษาแบบ Dynamic Type และเป็น Functional Programming ซึ่งอาศัยข้อดีของระบบของ Erlang VM มาเป็นพื้นฐาน (คือ compile Elixir แล้วได้ Erlang beam ซึ่งเป็น bytecode ของ Erlang ที่เอาไปรันผ่าน Erlang VM อีกที) และทำให้ Syntax นั้นเป็นมิตรกับคนเขียนมากกว่า Erlang (แต่จริงๆบางคนก็ชอบ Syntax ของ Erlang และมองว่าอ่านง่ายกว่า Elixir ก็มีนะ)

วันนี้จะลองติดตั้งแล้วลองใช้คำสั่ง iex, elixir และ elixirc เพื่อรันโค้ด Elixir เบื้องต้นกันดู

Install

ผมใช้ macOS ดังนั้นวิธีติดตั้งของผมเลยเลือกติดตั้งผ่าน brew ได้เลยแค่สั่ง

brew install elixir
Enter fullscreen mode Exit fullscreen mode

หลังจากลงแล้วเรียบร้อยแล้วลองสั่ง elixir -v ดูถ้าลงเรียบร้อยก็จะแสดง version ของ elixir และ erlang ให้แบบนี้

> elixir -v
Erlang/OTP 22 [erts-10.6.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

Elixir 1.9.4 (compiled with Erlang/OTP 22)
Enter fullscreen mode Exit fullscreen mode

หลังติดตั้งเสร็จเราจะได้ command มาใหม่ 4 อันได้แก่

  • elixir ใช้รัน Elixir script (ไฟล์นามสกุล .exs)
  • elixirc ใช้ compile Elixir module (ไฟล์นามสกุล .ex)
  • iex เป็น interactive Elixir เพื่อให้เราเรียกใช้ฟังก์ชันต่างๆได้เลยไม่ต้องเขียนลงไฟล์ก่อน
  • mix เป็น build tool ลอง Elixir ใช้ build project เตรียม build task ได้

แต่วันนี้เราจะลองแค่ iex, elixir, elixirc

iex

ลองสั่ง iex แล้วจะขึ้นเป็น interactive shell ให้เราแบบนี้

Erlang/OTP 22 [erts-10.6.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

Interactive Elixir (1.9.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
Enter fullscreen mode Exit fullscreen mode

เพื่อให้เราลองเรียกคำสั่งหรือฟังก์ชันของ Elixir ได้เลย ตัวอย่างเช่น เรียกใช้ IO.puts "Hello, World" ก็จะได้ผลลัพธ์แบบนี้

iex(1)> IO.puts "Hello, World"
Hello, World
:ok
iex(2)>
Enter fullscreen mode Exit fullscreen mode

สำหรับ Elixir โค้ดจะถูกแบบออกเป็น Module และภายใน Module เราจะประกาศและกำหนดฟังก์ชันกันภายใน Module นั่นเอง เสร็จแล้วในฝั่งคนใช้งาน การจะเรียกใช้ฟังก์ชัน ก็แค่ใช้ชื่อ Module ตามด้วย dot และชื่อฟังก์ชันที่เราต้องการเรียก พร้อมกับส่งค่าให้ฟังก์ชันถ้าฟังก์ชันนั้นต้องรับค่า เช่นที่เราเรียกด้านบน IO คือชื่อ module IO ที่รวบรวมฟังก์ชันเกี่ยวกับ Input/Output เอาไว้ และเราเรียกฟังก์ชัน puts โดยส่ง argument เป็นค่า string "Hello, World" ไปให้

IO.puts ก็แค่เอาค่าที่เราส่งไปแสดงผลที่คอนโซลแล้วส่งค่า :ok กลับออกมา (:ok เป็นค่าประเภท Atom ใน Elixir)

elixir

คำสั่ง elixir เป็นการสั่งให้รัน Elixir script ซึ่งเป็นไฟล์ที่เราเขียนโค้ดในลักษณะสคริปต์คือเรียกใช้ Elixir function เป็นลำดับๆไปนั่นเอง ซึ่งไฟล์สำหรับ Elixir script จะให้มีนามสกุลเป็น .exs เช่น hello.exs มีโค้ดอยู่แบบนี้

# hello.exs
IO.puts "Hello, World"
Enter fullscreen mode Exit fullscreen mode

เวลาเราอยากรันสคริปต์นี้ก็แค่สั่ง

elixir hello.exs
Hello World
Enter fullscreen mode Exit fullscreen mode

เราก็จะเห็นผลลัพธ์ที่แสดงออกคอนโซลเป็น Hello World

elixirc

elixirc เป็นคำสั่งเพื่อ compile โค้ด Elixir Module ให้กลายเป็น Erlang bytecode ได้นามสกุล .beam ซึ่งเราสามารถโหลด Module ที่เรา compile แล้วมาเรียกใช้ได้

สำหรับนามสกุลไฟล์ของ Elixir Module นั้นจะเป็น .ex ตัวอย่างเช่นผมเขียน module ใหม่ในไฟล์ hello.ex แบบนี้

defmodule Hello do
  def say do
    IO.puts "Hello, World"
  end
end
Enter fullscreen mode Exit fullscreen mode

จากโค้ดเราประกาศ module ใหม่โดยใช้คำสั่ง defmodule ตามด้วยชื่อ module ซึ่งต้องขึ้นต้นด้วยอักษรตัวใหญ่ แล้วตามด้วย block do end ภายใน block do end เราจะเขียนฟังก์ชันสำหรับ module นี้โดยใช้คำสั่ง def ตามด้วยชื่อฟังก์ชันเช่น say แล้วตามด้วย block do end ซึ่งภายในนี้จะเป็น body ของ function ว่าเราจะให้ฟังก์ชันทำอะไรบ้าง เช่น say เราแค่เรียกใช้ IO.puts เพื่อแสดง Hello, World

เรา compile module นี้โดยสั่ง

elixirc hello.ex
Enter fullscreen mode Exit fullscreen mode

แล้วเราจะได้ไฟล์ Elixir.Hello.beam ขึ้นมา

เราสามารถลองเรียกใช้ module Hello ได้โดยเปิด iex ขึ้นมาแล้วสั่งแบบนี้

iex(1)> Hello.say
Hello, World
:ok
Enter fullscreen mode Exit fullscreen mode

วันนี้เราได้ลองใช้ 3 คำสั่ง iex, elixir, elixirc เบื้องต้นกันไปแล้ว เราสามารถเข้าไปเริ่มหัดภาษา Elixir ต่อได้แล้วครับโดยที่เว็บไซต์หลักของภาษานั้นมี Getting Started เป็น tutorial ให้เราหัดต่อได้เลย

Top comments (0)