我试图弄清楚安全导航操作员是如何实现的,但没有找到它的来源,很想知道它的工作原理和效率。
答案 0 :(得分:7)
安全导航操作符是在Feature #11537之后实施的。
它是Ruby核心架构的一部分,即在语言解析器中实现,并在虚拟机中具有操作码。因此,没有一个地方可以实施操作员。它的第一个版本已添加到提交a356fe1c中,但此后已经看到了多个扩展名。
至于效率,答案可能是:相当。但是,您可能需要运行自己的基准测试,以确认它是否符合您的要求。
答案 1 :(得分:2)
在使用C将安全导航运算符实现为核心语言之前,曾经有一个具有类似功能的gem称为andand
。如果您想研究如何使用Ruby来实现这种方式,那么andand源是一个很好的起点:
https://github.com/raganwald/andand
require 'andand'
nil.andand.some_method
=> nil