如何在Ruby中访问另一个类中的方法?

时间:2015-06-23 17:36:03

标签: ruby

我是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内的这些方法?

2 个答案:

答案 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