如何将对象从主文件共享到 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
分机。这是隐含的。
我有类似的。
# 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
分机。这是隐含的。