【发布时间】:2015-12-30 08:42:04
【问题描述】:
我在检查 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
【问题讨论】:
-
您的问题不清楚。 Ruby 中的变量没有类型,因此您根本无法检查它们。我对 Python 不够熟悉,不知道 Python 是如何做到的,但在 Ruby 中,这简直是不可能的。您想要的信息不存在。
-
大约 6 到 7 年前,有一个名为 Diamondback Ruby (DRuby) 的研究项目为 Ruby 添加了类型系统,也许这就是你在找吗? Diamondback Ruby (DRuby) is an extension to Ruby that aims to bring the benefits of static typing to Ruby without compromising the expressiveness of the language.
-
@JörgWMittag 变量在 Ruby 中没有类型,但它们必须有值。 Python 在这方面与 Ruby 相同。
-
尽量避免这种情况,Ruby 是一种 OOP 语言,因此类和对象应该知道如何响应消息。