2010-05-18 16 views

Trả lời

15

Bạn không thể truy cập một địa phương nằm ngoài phạm vi được xác định trong - tệp trong trường hợp này. Nếu bạn muốn các biến vượt qua ranh giới tệp, hãy biến chúng thành bất kỳ thứ gì trừ người dân địa phương. $foo, Foo@foo sẽ hoạt động.

Nếu bạn thực sự không muốn đặt bất kỳ loại trang trí nào trên biểu tượng (vì bạn không thích cách đọc, có thể), một hack thông thường chỉ để xác định nó như một phương thức: def foo() "bar" end.

6

Tôi đã chấp nhận câu trả lời của Chuck vì đó là một giải pháp tốt, tuy nhiên tôi thực sự đã sử dụng một phương pháp khác, mà tôi nghĩ tôi muốn chia sẻ. Nó vô cùng khó khăn, nhưng rất hữu ích cho mục đích của tôi. Tôi cần quét một thư mục với hàng trăm tệp, mỗi tệp đã tạo một đối tượng có cùng tên và sau đó đổ một số thông tin về từng đối tượng. Đối với bất kỳ mục đích nghiêm trọng và không tạm thời nào, tôi sẽ không đề xuất điều này!

foo = "" 
eval File.open('inc.rb').read 

puts foo # "bar" 
1

Tôi thường chỉ định nghĩa chúng làm phương pháp. Tương tự như những gì nickf nói.

File1:

def static_path 
    '/opt/foo' 
end 

File2:

static_path 

Sau đó, chỉ cần thêm một:

require_relative 'file path/file name' hoặc require_relative 'file name' < = nếu tập tin nằm trong cùng một thư mục.

vào tệp bạn muốn sử dụng phương pháp/biến số.

Các vấn đề liên quan