我正在尝试从类中创建一个对象。但是当需要它们时会创建对象。下面的代码有点难以解释
incoming_message = #message sent though inter webs
class Repeater
def initialize(username, ip)
#repeat incoming message to back to ip
end
end
incoming_message = Repeater.new(user, ip)
现在我无法做到这一点,因为incoming_message不是常数。 我怎么能绕过这个?
编辑:
清理一下。我确实需要使用这个类来创建具有不同名称的多个对象。转发器用于聊天服务器,其中来自1个用户的传入消息被接收,然后被发送回所有连接的客户端。每个连接的新客户端都有一个使用该特定IP地址创建的对象,以便来自其他人的消息可以发送给客户端。
每个发送到同一端口上的服务器的人都会收到来自其他用户的消息,然后读取该消息,然后写入客户收到的消息......
我希望这对所有困惑感到抱歉:)
答案 0 :(得分:0)
如果要维护某种全局类级别状态,则应在Repeater
上定义一个类级别访问器,以便将重复消息分配给。
class Repeater
class << self
attr_accessor :incoming_message
end
def initialize(username, ip)
# repeat Repeater.incoming_message to back to ip
end
end
Repeater.incoming_message = "what"
Repeater.new(user, ip)
答案 1 :(得分:0)
您需要使用一些解析+序列化。他们可以连接已经序列化/编组的字符串吗?
1) convert the ruby code to yaml or json
2) use the json or yaml load method like myobj = YAML.load(new_yaml_string)
或
save it in another file called input and do a
require 'input'
create object of repeater