ruby - 有没有一种 Ruby 方法可以删除初始化程序中的样板代码?

标签 ruby design-patterns

我写了很多 initialize 代码,将 attrs 设置为参数,类似于:

  class SiteClient
    attr_reader :login, :password, :domain

    def initialize(login, password, domain='somedefaultsite.com')
      @login = login
      @password = password
      @domain = domain
    end
  end

有没有更像 Ruby 的方式来做到这一点?我觉得我在一遍又一遍地编写相同的样板设置代码。

最佳答案

您可以使用 ruby Struct :

class MyClass < Struct.new(:login, :password, :domain)
end

或者您可以为此尝试一些 gems,即 Virtus :

class MyClass
  include Virtus.model

  attribute :login, String
  attribute :password, String
  attribute :domain, String
end

然后(在这两种情况下):

MyClass.new(login: 'a', password: 'b', domain: 'c')

关于ruby - 有没有一种 Ruby 方法可以删除初始化程序中的样板代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287564/

相关文章:

python - 将 pyparsing 结果与节点链表相关联的模式

ruby - 在 Carrierwave 中手动上传和保存文件

ruby - 在 ruby​​ 类的特征类中设置实例默认值

JavaScript,在不使用 eval 的情况下将私有(private)函数作为公共(public)方法中的字符串调用(显示模式)

java - 重构基于 boolean 的流程

php - 选择架构

java - 在 C++ 中,我们有引用。但在 Java 中,我们如何最好地使用按值复制 "translate"相同的代码?

ruby - 最近点算法

ruby - 不能使用 has_secure_password,password_digest 错误

ruby - 如何使用 Ruby 在命令提示符中打印 unicode 字符