。通过测试来产生符合所有期望的完美功能。数据类型根据提供给函数的参数进行比较并返回结果
对于字符串,返回其长度。 对于无返回字符串'无值' 对于布尔值返回布尔值 对于数字,返回一个字符串,显示其与数百个对于67回“小于100”的4034回归“超过100” 对于数组返回第三指数,或零,如果它不存在
。通过测试来产生符合所有期望的完美功能。数据类型根据提供给函数的参数进行比较并返回结果
对于字符串,返回其长度。 对于无返回字符串'无值' 对于布尔值返回布尔值 对于数字,返回一个字符串,显示其与数百个对于67回“小于100”的4034回归“超过100” 对于数组返回第三指数,或零,如果它不存在
有一个叫.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
这将返回false希望这可以帮助你编写你的函数。
不完全,但至少它的一个开始非常感谢很多.. – flash
您可以使用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
这是非常一样@ 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
这看起来像家庭作业。你的问题是什么?你有什么尝试? – victorkohl
那种不是功课,我的问题? – flash
产生完美的功能,将占所有的期望, – flash