基于提供给函数的参数。通过测试来产生满足所有期望的完美功能。
对于字符串,返回其长度。 对于nil return string' no value' 对于布尔值,返回布尔值 对于数字,返回一个字符串,显示它与百分之比如67回程'少于100' 4034回归'超过100' 对于数组,返回第3个索引,如果不存在,则返回nil
答案 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.class
与String
希望这可以帮助你编写你的功能。