ruby #require_relative_with_tco与#require_relative类似,但尾部调用优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby #require_relative_with_tco与#require_relative类似,但尾部调用优化相关的知识,希望对你有一定的参考价值。

module Kernel
  def require_relative_with_tco file
    absolute_path = File.absolute_path file, __dir__
    realpath = File.realpath "#{absolute_path.chomp '.rb'}.rb"

    if $LOADED_FEATURES.include? realpath
      false
    else
      RubyVM::InstructionSequence.compile_file(
        realpath,
        tailcall_optimization: true,
        trace_instruction: false
      ).eval

      $LOADED_FEATURES << realpath

      true
    end

  rescue Errno::ENOTDIR, Errno::ENOENT
    raise LoadError, "cannot load such file -- #{absolute_path}"
  end
end

以上是关于ruby #require_relative_with_tco与#require_relative类似,但尾部调用优化的主要内容,如果未能解决你的问题,请参考以下文章

Ruby 25 岁了!Ruby 之父说 Ruby 3 有望 3 倍提速

如何学习ruby?Ruby学习技巧分享

ruby Ruby脚本,看看是否用openssl编译了ruby

什么是ruby?

ruby和ruby ee

ruby入门知识:了解ruby历史及特性