gpt4 book ai didi

reflection - 反射(reflection)用例

转载 作者:行者123 更新时间:2023-12-03 07:18:46 28 4
gpt4 key购买 nike

最近我和一位同事谈论 C++,感叹没有办法获取带有类字段名称的字符串并提取具有该名称的字段;换句话说,它缺乏反射(reflection)。他困惑地看着我,并问什么时候有人需要做这样的事情。

除了“嘿,我现在需要做”之外,我没有给他一个好的答案。所以我坐下来,列出了我用各种语言反射(reflection)实际做过的一些事情。不幸的是,我的大部分示例都来 self 用 Python 进行的 Web 编程,我希望这里的人们能有更多示例。这是我列出的 list :

  1. 给定一个包含以下行的配置文件
    x =“世界你好!”
    y = 5.0
    动态地将某些config对象的字段设置为等于该文件中的值。 (这是我希望在 C++ 中能做到的事情,但实际上做不到。)

  2. 对对象列表进行排序时,根据配置文件或 Web 请求中给定的任意属性进行排序。

  3. 编写使用网络协议(protocol)的软件时,反射允许您根据该协议(protocol)中的字符串值调用方法。例如,我编写了一个可以翻译的 IRC 机器人
    !some_command arg1 arg2
    进入方法调用 actions.some_command(arg1, arg2) 并打印该函数返回到 IRC channel 的所有内容。

  4. 当使用 Python 的 __getattr__ 函数(有点像 Ruby/Smalltalk 中的 method_missing)时,我正在使用一个具有大量统计数据的类,例如 Late_total。对于每个统计数据,我希望能够添加 _percent 来获取该统计数据占我所统计的总数据的百分比(例如 stats.late_total_percent)。反射(reflection)使这变得非常容易。

那么这里的任何人都可以从自己的编程经验中举出一些例子,说明反射(reflection)是有帮助的吗?下次当同事问我为什么“想做那样的事情”时,我希望做好更多准备。

最佳答案

我可以列出以下反射用法:

  • 后期绑定(bind)
  • 安全性(出于安全原因检查代码)
  • 代码分析
  • 动态类型(没有反射就不可能进行鸭式类型)
  • 元编程

根据我个人的经验,反射的一些实际用法:

  • 基于反射开发插件系统
  • 使用面向方面的编程模型
  • 执行静态代码分析
  • 使用过各种依赖注入(inject)框架
  • ...

反射(reflection)是件好事:)

关于reflection - 反射(reflection)用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com