如何将对象从主文件共享到 ruby 中的支持文件?

How do I share object from main file to supporting file in ruby?

我有类似的。

# MAIN.RB
require 'sockets'
require_relative 'replies.rb'
hostname = 'localhost'
port = 6500
s = TCPSocket.open(hostname, port)
$connected = 0
while line = s.gets   # Read lines from the socket
#DO A BUNCH OF STUFF
if line == "Hi"
reply line
end
end
s.close

那我在辅助文件里有回复功能

# REPLIES.RB

def reply(input)
if input == "Hi"
    s.write("Hello my friend.\n"
end    
end

然而,从第二个文件调用对象 s 似乎不起作用。我将如何着手进行这项工作。我是 Ruby 的新手。我在 google 中搜索了答案,但我找到的唯一结果是跨文件共享变量。我总是可以做 return "Hello my friend.\n",但我宁愿能够直接从 REPLIES.rb

中的函数写入套接字对象

记住变量是严格局部的,除非你明确地传入它们。这意味着 s 只存在于 main 上下文中。您可以通过传入它来解决此问题:

reply(s, line)

接收端:

def reply(s, input)
  # ...
end

强烈 鼓励你在这里尝试和缩进一致,这段代码真的不合时宜,并避免使用像 $connected 这样的全局变量。使用简单的自包含 class 您可以大大清理此代码。

此外,调用 require 时不要添加 .rb 分机。这是隐含的。