仅当条件为真时才使用Ruby方法

Vin*_*ent 0 ruby

所以我有这个代码:

class Door

    # ...

    def info attr = ""

        return {

            "width" => @width,
            "height" => @height,
            "color" => @color

        }[attr] if attr != ""

    end

end

mydoor = Door.new(100, 100, "red")

puts mydoor.info("width")

puts mydoor.info
Run Code Online (Sandbox Code Playgroud)

如果没有提供参数,方法"info"应返回散列,否则返回散列中参数的值.我怎样才能做到这一点?

rob*_*okl 5

def info(arg = nil)
  info = {"width" => @width,
          "height" => @height,
          "color" => @color}
  info[arg] || info
end
Run Code Online (Sandbox Code Playgroud)