当前位置:  开发笔记 > 编程语言 > 正文

在Ruby中检查变量类型

如何解决《在Ruby中检查变量类型》经验,为你挑选了1个好方法。

我在检查ruby中的变量类型时遇到问题。这是我想在ruby中复制的python示例代码。我想检查input类型:是字符串,整型还是列表,然后进行特定的打印操作。

def printing (input):
    if type(input) == type(""):
        pass
    elif type(input) == type(1):
        pass
    elif type(input) == type([]):
        pass
    elif type(input) == type({}):
        pass
    elif type(input) == type(()):
        pass

我找不到在Ruby中可以做到这一点的方法。下面的代码是我想要的样子。我假设我必须在案例阶段检查类型。

def printing (element)
    case element
    when element.type("")
        puts element
    when element.type(2)
        puts element
    when element.type({})
        element.each_pair { |name, val|  print "#{name} : #{value}"}
    when element.type([])
        element.each {|x| print x}
    end
end

shivam.. 5

我想你在找Object#class。这里:

element = {}
element.class
# => Hash
a = []
a.class
# => Array

这将使您的切换情况如下:

case element
when String
 # do something
when Fixnum
 # do something
when Hash
 # do something
when Array
 # do something
end

注意: 正如@ndn在下面的评论中提到的那样,case声明中不应包含.class该语句(我最初在回答中有该语句。你可以在这里找到解释。



1> shivam..:

我想你在找Object#class。这里:

element = {}
element.class
# => Hash
a = []
a.class
# => Array

这将使您的切换情况如下:

case element
when String
 # do something
when Fixnum
 # do something
when Hash
 # do something
when Array
 # do something
end

注意: 正如@ndn在下面的评论中提到的那样,case声明中不应包含.class该语句(我最初在回答中有该语句。你可以在这里找到解释。


删除`.class`
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有