Tag: 属性

布尔属性的命名约定

我想编写其他人也很容易理解的代码。 hide_email或email_hidden这样的布尔属性email_hidden具有约定风格?

Ruby中的方法和属性有什么区别?

能给我举个例子?

Ruby类中“属性”的本质是什么?

我不理解以下示例中的attr_reader或property等关键字: class Voiture attr_reader :name attr_writer :name property :id, Serial property :name, String property :completed_at, DateTime end 他们是如何工作的? 我该如何创建自己的? 它们是function,方法吗? class MyClass mymagickstuff :hello end

是否有可能比较Ruby中的私有属性?

我在考虑: class X def new() @a = 1 end def m( other ) @a == other.@a end end x = X.new() y = X.new() xm( y ) 但它不起作用。 错误消息是: syntax error, unexpected tIVAR 我如何比较来自同一类的两个私有属性呢?

动态创建一个类

我正在尝试创建一个新类,不知道该类的名称,直到它应该创建。 像这样的东西; variable = “ValidClassName” class variable end Test = ValidClassName.new 如果可能的话,我也会欣赏有关如何动态地向这个新类添加属性(和方法)的提示。 我将为课程检索“设置”,它们看起来像这样: title :Person attribute :name, String attribute :age, Fixnum 但是不应该只接受那个显式文件,属性可能在数字结尾类型上有所不同。 最终会生成一个看起来像这样的类: class Person def initialize(name, age) @name_out = name @age_out = age end end 救命?

如何从字符串转换为对象属性名称?

我试图将字符串值转换为属于对象的属性的名称。 例如,在以下代码中,我需要将column_array中的所有字符串值转换为属性名称。 名称”student_identification” , “email”等是我的Student表的实际列名。 在实际场景中, column_array将由用户设置(通过勾选复选框)。 并且new_array将被csv取代,因为我希望数据进入csv文件。 目前我真的在以下方面苦苦挣扎: new_array << r."#{column_array[i]}" 我想将”#{column_array[i]}”转换为属性名称,以便我可以访问数据。 def exp_tst @records = Student.find(:all, :conditions=> session[:selection_scope], :order => sort_order(‘laboratory_id’)) column_array = [“student_identification”, “laboratory_id”, “email”, “current_status”] new_array = Array.new() @records.each do |r| (0..(column_array.size-1)).each do |i| new_array << r."#{column_array[i]}" end end end

Ruby – 动态地向类添加属性(在运行时)

我正在寻找一种方法在运行时向我已经定义的类添加属性,或者更好: class Client attr_accessor :login, :password def initialize args = {} self.login = args[:login] self.password = args[:password] end end 但是,我有这个哈希 {:swift_bic=>”XXXX”, :account_name=>”XXXX”, :id=>”123″, :iban=>”XXXX”} 我希望这个哈希成为我的客户端实例的一部分 client = Client.new :login => ‘user’, :password => ‘xxxxx’ 然后带着神奇的魔力 client @@%$%PLIM!!! {:swift_bic=>”XXXX”, :account_name=>”XXXX”, :id=>”123″, :iban=>”XXXX”} 我可以访问 client.swift_bic => ‘XXXX’ client.account_name => ‘XXXX’ client.id => 123 我还想保持一个适当的对象结构,如: Client.new(:login => ‘user’, […]

是否有可能让class.property = x返回x以外的东西?

假设我有一个Ruby类: class MyClass def self.property return “someVal” end def self.property=(newVal) # do something to set “property” success = true return success # success is a boolean end end 如果我尝试执行MyClass.property=x ,则整个语句的返回值始终为x。 许多基于C语言/灵感的语言中的约定是返回布尔“成功”值 – 是否可以使用Ruby中的“equals语法”为setter执行此操作? 此外 – 如果不可能,为什么不呢? 允许“等于设定者”操作返回值是否有任何可以想象的缺点?