ฟิลด์แท็กมีรหัสเฉพาะของแท็ก ฉันต้องการแสดงชื่อแท็กในแบบฟอร์มแทนรหัสเฉพาะ
เป็นอย่างไรบ้าง:
-module(a).
-compile(export_all).
-record(expense, {uuid, amount, tags}).
show_action(#expense{uuid=UUID, amount=Amount, tags={A, B, C} }) ->
TagConversions= #{1 => "Joe", 2 => "Tammy", 3 => "Bob"},
A_Conv = maps:get(A, TagConversions, "Nathan"),
B_Conv = maps:get(B, TagConversions, "Nathan"),
C_Conv = maps:get(C, TagConversions, "Nathan"),
io:format("~w, ~w, {~s,~s,~s}~n",
[UUID, Amount, A_Conv, B_Conv, C_Conv]).
go() ->
Expense1 = #expense{uuid=1, amount=10, tags={1,2,3} },
show_action(Expense1).
ในเปลือก:
12> c(a).
a.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,a}
13> a:go().
1, 10, {Joe,Tammy,Bob}
ok
ฉันต้องการให้บันทึกเวอร์ชันที่แสดงได้ แต่มันจะสร้างบันทึกที่ซ้ำซ้อนมากมาย
ใช่ แต่ใน OOP คุณไม่มีการแพร่กระจายของออบเจ็กต์ View ที่มีข้อมูลทั้งหมดหรือชุดย่อยในออบเจ็กต์ Model ใช่หรือไม่
ตัวเลือกที่ 1 ใช้บันทึกเดียวกันกับรูปแบบข้อมูลที่แตกต่างกัน แต่ฉันคิดว่ามันจะทำให้สัญญาอินเทอร์เฟซเสียหาย เราจะไม่สามารถรู้ได้ว่ามีบันทึกเวอร์ชันใด
คุณสามารถจัดโครงสร้างเรคคอร์ดโดยเว้นจุดว่างไว้สำหรับชื่อแท็กที่สอดคล้องกับรหัสแท็ก จากนั้นกรอกชื่อแท็กเมื่อคุณสามารถ:
-module(a).
-compile(export_all).
-record(tag, {id, name=""}).
-record(expense, {uuid, amount, tags}).
show_action(Expense = #expense{uuid=UUID, amount=Amount, tags={A, B, C} }) ->
TagConversions= #{1 => "Joe", 2 => "Tammy", 3 => "Bob"},
A_Conv = maps:get(A#tag.id, TagConversions, "Nathan"),
B_Conv = maps:get(B#tag.id, TagConversions, "Nathan"),
C_Conv = maps:get(C#tag.id, TagConversions, "Nathan"),
io:format("~w, ~w, {~s,~s,~s}~n",
[UUID, Amount, A_Conv, B_Conv, C_Conv]),
Expense#expense{tags={
A#tag{name=A_Conv},
B#tag{name=B_Conv},
C#tag{name=C_Conv}
}}.
go() ->
Expense1 = #expense{uuid=1, amount=10,
tags={#tag{id=1},
#tag{id=2},
#tag{id=3} }
},
show_action(Expense1).
ในเปลือก:
5> c(a).
a.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,a}
6> a:go().
1, 10, {Joe,Tammy,Bob}
{expense,1,10,{{tag,1,"Joe"},{tag,2,"Tammy"},{tag,3,"Bob"}}}
person
7stud
schedule
15.02.2021