만능약เรียกฟังก์ชันแบบ 동태

6501 단어 elixir
만능약เป็น 함수 언어ซึ่งโครงสร้างของโค้ดจะถูกประกอบขึ้นมาจากการ ร้อยเรียงการเรียกใช้งาน 기능เล็กๆ ให้เป็นการทำงานที่ซับซ้อนขึ้น
โค้ดของ 만능약จะถูกจัดกลุ่ม 기능ออกเป็น 모듈ตัวอย่างเช่น
defmodule Calc do
  def add(a, b) do
    a + b
  end
end
ก็คือเราสร้าง 모듈 계산ที่มีฟังก์ชันชื่อ 덧붙이다
เวลาเรียกใช้งาน 기능นั้นต้องใช้ชื่อ 모듈แล้วใช้ . ตามด้วยชื่อ 기능และ () ที่มี 논거ที่ต้องการส่งใช้ 기능เช่น
Calc.add(10, 20)

เรียก 기능แบบ 동적 모듈
อย่างไรก็ตาม นอกจากความเป็น 함수 언어แล้ว 만능약ยังเป็น 동적 언어ด้วย
จริงๆแล้วการเรียก 기능ด้วย . นั้นประกอบด้วย 셋ส่วน
  • ชื่อ 모듈
  • ชื่อ 기능
  • ลิสต์ของ 매개변수(arg1, arg2,...)
  • ใน 만능약ชื่อของ 모듈ก็ถือว่าเป็นข้อมูลที่มีประเภทเป็น 아토믹스ดังนั้นถ้าเรามีตัวแปรเก็บชื่อ 아토믹스แบบนี้
    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"])
    

    สรุป
    ดัวยความเป็น 다이내믹ของ 만능약ทำให้เราสามารถ 응용 함수โดย แยก 모듈ออกไปเป็น 매개 변수ได้
    หรือเมื่อใช้ 응용 함수ก็ทำให้เราแยกชื่อฟังก์ชันเป็น 매개 변수ได้เช่นกัน
    ช่วยให้เราสามารถเขียนโค้ดที่รองรับการเปลี่ยนการทำงานโดยการเขียนเป็น 모듈ให้แล้ว 신청하다.แบบ 다이내믹ได้เลย
    สามารถเขียนโค้ดส่วนที่ซ้ำกันออกมาแล้วทำให้ส่วนที่ไม่ซ้ำแยกเป็น 모듈ใหม่ที่รับเป็นแค่ 매개 변수เข้ามาได้ง่ายๆ และทำให้ทดสอบได้ง่ายอีกด้วย

    좋은 웹페이지 즐겨찾기