Functions
- ฟังก์ชั่นถูกจัดกลุ่มเก็บไว้ใน module
- ชื่อฟังก์ชั่นเป็น atom
- ฟังก์ชั่นประกอบด้วยส่วนหัวคือชื่อของฟังก์ชั่น และวงเล็บพารามิเตอร์
- จำนวนพารามิเตอร์เรียก arity
- ใช้เครื่องหมายลูกศร (->) เป็นตัวแยกส่วนหัวกับ ตัวของฟังก์ชั่น
ตัวอย่างฟังก์ชั่นคำนวณพื้นที่ของรูปทรง
area({square,Side})->
Side*Side;
area({cicle,Radius})->
math:pi()*Radius*Raduis;
area({triangle,A,B,C})->
S=(A+B+C)/2,
math:sqrt(S*(S-A)*(S-B)*(S-C));
area(Other)->
{error,invalid_object}.
การใช้งานฟังก์ชั่น เมื่อมีการผ่านค่าพารามิเตอร์ จะมีการตรวจสอบรูปแบบของพารามิเตอร์ว่ามีความสัมพันธ์ตรงกับฟังก์ชั่นใด
1. เทียบแล้วถ้ามีรูปแบบที่ถูกต้อง ตัวแปรถูกผูก ส่วนของคำสั่งภายในฟังก์ชั่นประมวลผล
2. ถ้าไม่ ให้เทียบกับฟังก์ชั่นถัดไป
3. ถ้าไม่มีฟังก์ชั่นใดที่รูปแบบตรงกับพารามิเตอร์ ให้ทำฟังก์ชั่น area(Other) ซึ่งเป็นฟังก์ชั่น catch-all
ตัวอย่างฟังก์ชั่น factorial แบบ recursive
factorial(0)-> 1;
factorial(N)->
N*factorial(N-1);
การทำงานเมื่อ 3! = 3*2*1*1
เรียกใช้ฟังก์ชั่น
factorial(3).
ขั้นตอนการทำงาน
3*factorial(3-1) 3*2*1*1
2*factorial(2-1) 2*1*1
1*factorial(1-1) 1*1
factorial(0) 1
Modules
- Module คือการจัดกลุ่มรวมเอาฟังก์ชั่นเข้าด้วยกัน
- การตั้งชื่อ module ใช้ –module(name)
- ชื่อไฟล์ .erl และชื่อโมดูลต้องเหมือนกัน
ตัวอย่าง
-module(mymodule). %ตั้งชื่อ module
-export([double/1]). %กำหนดฟังก์ชั่นที่เรียกได้จากภายนอก (ชื่อฟังก์ชั่น/จำนวนพารามิเตอร์)
%เขียนคอมเมน์หลังเครื่องหมายเปอร์เซนต์
double(Value)->
times(Value,2).
times(X,Y)->
X*Y.
Compilation and The Erlang Virtual Machine
- เมื่อต้องการรันฟังก์ชั่นจากโมดูลต้องทำการคอมไพล์โค้ดที่เขียนขึ้นก่อน
- คอมไพล์ไฟล์ .erl ได้ .beam อยู่ที่เดียวกัน
- ไฟล์ .beam มาจาก Bogdan/Björn's Erlang Abstract Machine
ตัวอย่างการใช้งาน
ใช้ pwd(). ดูไดเรกทอรีที่ใช้งานอยู่ปัจจุบัน
ใช้ ls(). ดูรายการไฟล์ในไดเรกทอรี
ใช้ cd('เปลี่ยนไดเรกทอรี').
ดูคำสั่งอื่นๆ help().
คอมไพล์โมดูล c(mymodule).
เรียกใช้งานฟังก์ชั่นในโมดูล mymodule:double(10).
1> pwd().
C:/Program Files/erl5.10.1/usr
ok
2> ls().
include lib mymodule.erl sample.erl
ok
3> c(mymodule).
{ok,mymodule}
4> mymodule:double(10).
20
5>
Module Directives
ในทุกโมดูลสามารถกำหนดคุณสมบัติ และข้อมูลให้กับโมดูลได้ ใช้รูปแบบ
-attribute(Value).
วางไว้ในตอนต้นของโค้ดในโมดูล
ตัวอย่างเช่น
-compile(export_all).
ทำการ export ทุกฟังก์ชั่นที่มีอยู่ไว้ในโมดูล
-import(math,[sqr/1]).
นำเข้าฟังก์ชั่น sqr จากโมดูล math
-author(Name).
ชื่อผู้เขียนโมดูล
-date(Date).
วันที่
เรียกดูข้อมูลของโมดูลจากคอนโซล
mymodule:module_info().
1> mymodule:module_info().
[{exports,[{double,1},{module_info,0},{module_info,1}]},
{imports,[]},
{attributes,[{vsn,[41764679909994037487721795937844871700]}]},
{compile,[{options,[]},
{version,"4.9.1"},
{time,{2013,6,9,6,8,3}},
{source,"c:/Program Files/erl5.10.1/usr/mymodule.erl"}]}]
2>
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น