elixir defdelegate 使用

delegate 模式,在不少语言都支持,有些是隐式的(一些早期语言),有些是显式的(新语言,kotlin,swift等)
elixir 也支持delegate 处理,还是比较方便的,以下是一个简单的使用

定义原始方法

  • default.ex
 
defmodule Default do
  def login(name,password) do
    IO.puts "from Default.login"
    IO.puts "name: #{name}---password: #{password}"
  end
end
  • 定义使用
    对于EctoApp 模块中的login/2 方法使用Default 中的
 
defmodule EctoApp do
  defdelegate login(name,password), to: Default
end
  • 效果

说明

delegate 模式 在实际开发中还是比较常见的,现在不少新的开发语言都直接支持了

参考资料

https://hexdocs.pm/elixir/1.12.3/Kernel.html#defdelegate/2
https://kotlinlang.org/docs/delegation.html
https://developer.apple.com/documentation/swift/using-delegates-to-customize-object-behavior
https://www.swiftbysundell.com/articles/delegation-in-swift/

posted on   荣锋亮  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-01-04 dremio DatasetSaver 服务说明
2023-01-04 dremio datastore简单说明
2023-01-04 piperider 开源数据可靠性工具
2022-01-04 census 安全处理模式
2022-01-04 castled 简单原理说明
2021-01-04 goja 支持es6的一种方法
2021-01-04 salesforce 跨组织数据可见性的方案

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示