gpt4 book ai didi

ruby - 我可以从 Ruby 中的必需脚本访问数据吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:56 25 4
gpt4 key购买 nike

是否可以在“主”脚本以外的 ruby​​ 文件中访问 __END__ 之后的文本?

例如:

# b.rb
B_DATA = DATA.read
__END__
bbb

.

# a.rb
require 'b'
A_DATA = DATA.read
puts 'A_DATA: ' + A_DATA
puts 'B_DATA: ' + B_DATA
__END__
aaa

.

C:\Temp>ruby a.rb
A_DATA:
B_DATA: aaa

有什么方法可以从 b.rb 获取“bbb”吗?

最佳答案

不幸的是,DATA 全局常量是在加载“main”脚本时设置的。一些可能有帮助的事情:

可以至少让A_DATA 是正确的。只需将a.rb中前两个操作的顺序颠倒即可:

# a.rb
A_DATA = DATA.read
require 'b'
...

如果你通过一些 rigamarole,你可以获得正确的 B_DATA:

# load_data_regardless_of_main_script.rb
module LoadDataRegardlessOfMainScript
def self.from(file)
# the performance of this function could be
# greatly improved by using a StringIO buffer
# and only appending to it after seeing __END__.
File.read(file).sub(/\A.*\n__END__\n/m, '')
end
end

# b.rb:
require 'load_data_regardless_of_main_script'
B_DATA = LoadDataRegardlessOfMainScript.from(__FILE__)

关于ruby - 我可以从 Ruby 中的必需脚本访问数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156629/

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