新手问题 判断变量是否是数组或其它

fayake · 2015年04月03日 · 最后由 yarving 回复于 2016年11月25日 · 9090 次阅读
a = [1,2]
a.class == Array

谁还有更好的方法 类似

is_a?

这样的写法

不明白楼主的意思, is_a? 不是能用?


 irb
2.2.1 :001 > a = [1, 2]
 => [1, 2]
2.2.1 :002 > a.is_a? String
 => false
2.2.1 :003 > a.is_a? Array
 => true
2.2.1 :004 >

基本上不需要判断的

 a = nil
 Array(a) #=> []

 b = [1,2,3]
Array(b) #=> [1,2,3]

如果就判断是否一个类就 is_a?

如果是多个类就

case object
when Array
when String
when Hash
else
end
object = %w(t r y ' r e s p o n d _t o ? ')
last = ''
if object.respond_to?(:each)
  object.each do |item|
    last << item
  end
end
puts last

is_a?的别名 kind_of? instance_of?判断是否是一个类的实例

respond_to?(:to_ary)

#1 楼 @lyfi2003 学习了,谢谢!

#2 楼 @blacktulip 可以用,is_a?,当时没有想明白,谢谢回复

#4 楼 @lululau 这也行,RUBY 好 NB,学习了,以前想都没有想过

#6 楼 @ery 感谢回复,学习了

#8 楼 @lekyooz 谢谢,学习了。呵呵

#7 楼 @chaucerling 像这种基础知识除了看 API 还有什么其它途径学习吗?如果看 Api 又以什么为重点看呢,如果知道烦请回复下。谢谢!

多谢@googya irb 下测试如下: ··· irb(main):001:0> Array('asdf') => ["asdf"] irb(main):002:0> Array(['asdf', 'asdf']) => ["asdf", "asdf"] irb(main):003:0> ···

需要 登录 后方可回复, 如果你还没有账号请 注册新账号