Nếu tôi làm một trận đấu với một biểu thức chính quy với mười chụp:Tại sao chỉ một số lượng hạn chế các biểu thức chính quy được lưu trữ trong `global_variables`?
/(o)(t)(th)(f)(fi)(s)(se)(e)(n)(t)/.match("otthffisseent")
sau đó, cho $10
, tôi nhận được:
$10 # => "t"
nhưng nó là mất tích từ global_variables
. Tôi nhận được (trong một phiên IRB):
[:$;, :$-F, :[email protected], :$!, :$SAFE, :$~, :$&, :$`, :$', :$+, :$=, :$KCODE, :$-K, :$,,
:$/, :$-0, :$\, :$_, :$stdin, :$stdout, :$stderr, :$>, :$<, :$., :$FILENAME,
:$-i, :$*, :$?, :$$, :$:, :$-I, :$LOAD_PATH, :$", :$LOADED_FEATURES,
:$VERBOSE, :$-v, :$-w, :$-W, :$DEBUG, :$-d, :$0, :$PROGRAM_NAME, :$-p, :$-l,
:$-a, :$binding, :$1, :$2, :$3, :$4, :$5, :$6, :$7, :$8, :$9]
Ở đây, chỉ có chín đầu tiên được liệt kê:
$1, :$2, :$3, :$4, :$5, :$6, :$7, :$8, :$9
này cũng được xác nhận bởi:
global_variables.include?(:$10) # => false
đâu $10
lưu trữ, và tại sao nó không được lưu trữ trong global_variables
?
Bạn có thể sử dụng '$ ~' chứa đối tượng MatchData, qua đó bạn có thể truy cập tất cả các kết quả bắt đầu bằng chỉ mục 1. –
@TamerShlash bạn cũng có thể sử dụng '$ 10', nhưng điều đó không giải thích được biến toàn cục đó là được lưu trữ và tại sao nó bị thiếu trong 'global_variables' – Stefan
Đúng vậy, tôi đã đọc sai câu hỏi. –