2015-05-14 17 views
-3

。通过测试来产生符合所有期望的完美功能。数据类型根据提供给函数的参数进行比较并返回结果

对于字符串,返回其长度。 对于无返回字符串'无值' 对于布尔值返回布尔值 对于数字,返回一个字符串,显示其与数百个对于67回“小于100”的4034回归“超过100” 对于数组返回第三指数,或零,如果它不存在

+3

这看起来像家庭作业。你的问题是什么?你有什么尝试? – victorkohl

+0

那种不是功课,我的问题? – flash

+0

产生完美的功能,将占所有的期望, – flash

回答

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希望这可以帮助你编写你的函数。

+0

不完全,但至少它的一个开始非常感谢很多.. – flash

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

这是非常一样@ 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 
相关问题