面试题答案
一键面试在Ruby中,可以使用is_a?
方法来进行动态类型检查。以下是一个示例代码,展示如何在运行时检查参数类型以避免类型不匹配错误,同时保持动态类型的灵活性:
def arithmetic_operation(a, b)
unless a.is_a?(Numeric) && b.is_a?(Numeric)
raise ArgumentError, "Both arguments must be numeric"
end
a + b
end
原理解释:
- 类型检查:
- 使用
is_a?
方法检查参数a
和b
是否都是Numeric
类或其子类的实例。Numeric
类是所有数字类型(如Integer
、Float
等)的超类。这样可以确保传递给方法的参数都可以进行算术操作。
- 使用
- 错误处理:
- 如果任何一个参数不是
Numeric
类型,unless
条件为真,使用raise
关键字抛出一个ArgumentError
异常,并附带错误信息“Both arguments must be numeric”。这样可以明确告知调用者参数类型有误。
- 如果任何一个参数不是
- 保持灵活性:
- 只要参数是
Numeric
类型及其子类,无论是整数、浮点数还是其他数字类型,都可以正常执行算术操作,从而保持了Ruby动态类型语言的灵活性。
- 只要参数是