만능약เรียกฟังก์ชันแบบ 동태
6501 단어 elixir
โค้ดของ 만능약จะถูกจัดกลุ่ม 기능ออกเป็น 모듈ตัวอย่างเช่น
defmodule Calc do
def add(a, b) do
a + b
end
end
ก็คือเราสร้าง 모듈 계산ที่มีฟังก์ชันชื่อ 덧붙이다เวลาเรียกใช้งาน 기능นั้นต้องใช้ชื่อ 모듈แล้วใช้
.
ตามด้วยชื่อ 기능และ ()
ที่มี 논거ที่ต้องการส่งใช้ 기능เช่นCalc.add(10, 20)
เรียก 기능แบบ 동적 모듈
อย่างไรก็ตาม นอกจากความเป็น 함수 언어แล้ว 만능약ยังเป็น 동적 언어ด้วย
จริงๆแล้วการเรียก 기능ด้วย
.
นั้นประกอบด้วย 셋ส่วนmod = Calc
เราสามารถเรียก 기능ให้ทำงานได้เช่นกันแบบนี้mod.add(10, 20)
ด้วยเทคนิคนี้เราสามารถเขียนโค้ดซึ่งแยก 모듈ออกเป็น 매개 변수เพื่อที่จะทำให้เราเปลี่ยน 모듈ได้ เพื่อที่จะเปลี่ยนกลไกการทำงานไม่ 수리하다.ตายตัว หรือเพื่อทำให้ง่ายต่อการเขียน 테스트เช่นdefmodule Apply do
def add(mod, a, b) do
mod:add(a, b)
end
end
จะเห็นว่า 기능Apply.add
จะรับ 매개변수mod
เข้ามาแล้วเอาไปใช้เพื่อเรียก mod:add(a, b)
เราสามารถเรียกใช้ 신청덧붙이다ได้โดยส่ง 모듈เป็น 논쟁하다เข้าไปแบบนี้Apply.add(Calc, 10, 20)
หรือถ้าเรามี 모듈อื่นที่มีฟังก์ชัน add/2
แบบนี้defmodule Text do
def add(a, b) do
"#{a}, #{b}"
end
end
เราก็สามารถเรียกใช้ 신청덧붙이다ได้แบบนี้เช่นกันApply.add(Text, "Hello", "World")
เรียก 기능แบบ 동적 모듈และชื่อ 기능ด้วย 응용 프로그램
ใน 만능약ชื่อ 기능ก็เป็นข้อมูลแบบ 아토믹스เช่นกัน เช่นฟังก์ชัน
add
ก็คือ 원자:add
นั่นเองและ 만능약มีฟังก์ชันชื่อ 신청하다.ที่จะรับชื่อ 모듈,ชื่อ 기능ที่เป็น 아토믹스และ ลิสต์ของ 논거เพื่อเรียกฟังก์ชันแบบ 다이내믹ให้กับเราเช่น เราจะเรียก 계산 추가ผ่าน 신청하다.ได้ดังนี้
apply(Calc, :add, [10, 20])
และเรียก 문자덧붙이다ผ่าน 신청하다.ได้แบบนี้apply(Text, :add, ["Hello", "World"])
สรุป
ดัวยความเป็น 다이내믹ของ 만능약ทำให้เราสามารถ 응용 함수โดย แยก 모듈ออกไปเป็น 매개 변수ได้
หรือเมื่อใช้ 응용 함수ก็ทำให้เราแยกชื่อฟังก์ชันเป็น 매개 변수ได้เช่นกัน
ช่วยให้เราสามารถเขียนโค้ดที่รองรับการเปลี่ยนการทำงานโดยการเขียนเป็น 모듈ให้แล้ว 신청하다.แบบ 다이내믹ได้เลย
สามารถเขียนโค้ดส่วนที่ซ้ำกันออกมาแล้วทำให้ส่วนที่ไม่ซ้ำแยกเป็น 모듈ใหม่ที่รับเป็นแค่ 매개 변수เข้ามาได้ง่ายๆ และทำให้ทดสอบได้ง่ายอีกด้วย
Reference
이 문제에 관하여(만능약เรียกฟังก์ชันแบบ 동태), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iporsut/elixir-dynamic-30a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)