数据类型比较并返回结果

时间:2015-05-14 16:00:46

标签: ruby

基于提供给函数的参数。通过测试来产生满足所有期望的完美功能。

对于字符串,返回其长度。 对于nil return string' no value' 对于布尔值,返回布尔值 对于数字,返回一个字符串,显示它与百分之比如67回程'少于100' 4034回归'超过100' 对于数组,返回第3个索引,如果不存在,则返回nil

3 个答案:

答案 0 :(得分:2)

这与@ T.Aoukar非常相似,但不那么冗长。

def perfect(a)
  case a
    when String
      a.size
    when Array
      a[2]
    when TrueClass, FalseClass
      a
    when NilClass
      "no value"
    when Numeric
      #insert code yourself
  end
end

答案 1 :(得分:1)

您可以使用is_a?方法检查数据类型。

例如:(这不是完整的完成函数,仅作为参考)

def function(argu)
    if argu.is_a?(Integer)
       argu > 100 ? "more than 100" : "less than or equal to 100"
    elsif argu.is_a?(String)
       argu.length
    elsif [true, false].include? argu
       argu
    elsif argu.is_a?(Array)
       argu[2]
    end
end

puts function(101)
puts function(10)
puts function("abc")
puts function(true)
puts function([1,2,3])

more than 100
less than 100
3
true
3

答案 2 :(得分:0)

有一个名为.class的惊人方法,它将返回对象类(参数),然后您可以使用case语句检查每个类并返回必需的函数,String类的示例:

def test (a)
  case a.class.to_s
    when 'String'
      return a.length
  end
end

请注意,如果您使用a.class而不使用.to_s,则无法使用case,但您必须使用if因为case }语句与===类似,当您将a.classString

进行比较时,它将返回false

希望这可以帮助你编写你的功能。