วันอาทิตย์ที่ 15 ธันวาคม พ.ศ. 2556

List Comprehensions ใน Erlang

List comprehensions เป็น Features เล็กๆ ใน functional programming ยุคใหม่ ที่มีแนวคิดคล้ายกับ ZFC (ทฤษฏี Zermelo–Fraenkel)โดยมี Syntax ตามนี้

[Expr || Qualifier1,...,QualifierN]

เวลาใช้งาน

1> [{A} || A <- "A"].
[{65}]

รูปแบบการใช้อื่นๆ เช่น

1> [A*2 || A <- [2,3,4]].
[4,6,8]

2> [{ I, 2, I} || I <- "1"].
[{49,2,49}]

3> [{A,B,C} || A <- "1", B <- "2", C <- "3"].
[{49,50,51}]

4> [{A,B,C} || A <- [1], B <- [2], C <- [3]].
[{1,2,3}]

มีประโยชน์มาก เช่นเวลาทำ expression binding สำหรับ SQL statement เช่น

-define(INSERT, <<"insert into tbl_info (title, data) values (:title, :data)">>).
-define(INFO_BIND_LIST, [{<<":title">>, 'SQLT_STR'}, {<<":data">>, 'SQLT_STR'}]).
.
.
.
Statement = OciSession:prep_sql(?INSERT),
StatementRes = Statement:bind_vars(?INFO_BIND_LIST),
Statement:exec_stmt([ {Title, Data} || Title <- retrieveTitle(Args), Data <- retrieveData(Args)]),
.
.
.


Erlangian is erlanging.




2 ความคิดเห็น:

  1. ท่าที่เอามาใช้กับ exec_stmt นี้ไม่เคยเห็น แต่ก็ทำให้ code ดูเข้าท่าดีครับ

    ตอบลบ
  2. ผมลืมไปหมดแล้ว เห็นโีคดแล้วนึกไม่ออกเลย

    ตอบลบ