我是Ruby的初学者。
我一直在单个类中构建代码,因为我一直在学习,但现在该类已经变得臃肿,代码与该类不一定相关。
以下是一个例子:
Class Server
def initialize(server, port)
@con = Mysql.new 'localhost', 'services', 'password', 'services'
@server = server
@port = port
end
def send(s)
@chat.send "#{s}\n", 0
end
def connect()
puts @con.get_server_info
@con.query("DROP TABLE IF EXISTS \
rooms")
end
这里开始@con
的数据库部分不一定与Server
相关,所以我想我应该创建一个新的类Database
并将所有与数据库相关的方法放在其中,但是我的问题是,一旦我将所有与数据库相关的方法移出Server
并移至Database
,如何从Database
Server
中访问.eml
内的这些方法?
答案 0 :(得分:0)
如果需要访问实例方法,则需要先创建实例:
database = Database.new
database.connect
还有类方法,可以直接在类上调用:
class Database
def self.connect
end
end
Database.connect
答案 1 :(得分:0)
由于整个系统需要连接,因此可以在主类中设置它并将其继承到其他类:
class Server
def initialize(server, port)
@con = Mysql.new 'localhost', 'services', 'password', 'services'
@server = server
@port = port
end
def connect()
puts @con.get_server_info
@con.query("DROP TABLE IF EXISTS \
rooms")
end
end
class MyClass < Server
def send(s)
@chat.send "#{s}\n", 0
end
end
因此,MyClass
可以访问Server
中设置的方法。
或强>
您可以写一个module
并将其包含在课程中:
module Database
...
end
class Server
include Database
...
end