将变量设置为类中的属性给了我一个id而不是string

时间:2015-10-20 07:36:09

标签: ruby

我有一个问题,我试图从一个假定为字符串的类中获取属性。但是它给了我对象的id

# tenant can be a string or a Tenant Object
def return_name (tenant)
  if tenant.class == "Tenant"
    name = tenant.name
  else
    name = tenant
  end
  return name
end

# puts return_name (tenantObj) will print out
<Tenant:0x007fc9ba1fe3a8>

# puts return_name ("denis") will print out
denis

你是如何解决这个问题的?

3 个答案:

答案 0 :(得分:0)

ruby中的

#class返回类,但不是字符串。

def return_name (tenant)
  if tenant.class == Tenant # or tenant.instance_of? Tenant
    tenant.name
  else
    tenant
  end
end

答案 1 :(得分:0)

    def return_name (tenant)
      tenant.is_a?(Tenant) ? tenant.name : tenant
    end

答案 2 :(得分:0)

只是为了扩展Harunojikan的回答;

def return_name (tenant)
  tenant.respond_to? :name ? tenant.name : tenant
end

我认为respond_to在ruby中更具惯用性