如何检查参数是否为整数,如果不是 return nil
how to check if an argument is an integer and if not return nil
我如何在 ruby 中写这个“检查某物是否为整数,如果不是 return 则为零。否则将其除以 2 和 return 结果。我
不明白如何让它检查它是否不是整数并且 return nil。将其写入函数
def halve(x) x / 2 end
在Ruby中,你可以使用instance_of?
to check if the object is an instance of a given class and is_a?
which returns true
if the given class is the class of the object ,或者如果给定的 class 是对象的超class之一。
In Ruby 多态性或 duck-typing 是首选,在这个例子中,我认为其中一种方法也是一个不错的选择。恕我直言 is_a?
比 Ruby 中的 instance_of?
更惯用,但这取决于您的具体用例。
def halve(x)
if x.is_a?(Integer)
x / 2.0
else
nil
end
end
请注意,我将 x / 2
更改为 x / 2.0
,因为假设 x = 3
然后 x / 2
会 return 1
但 x / 2.0
将 return 1.5
。有关详细信息,请参阅 Integer#/
的文档。
def halve(x)
x.is_a?(Integer) ? x.fdiv(2) : nil
end
如果传递的参数是该对象的 class,则 #is_a?(obj)
return 为真。您也可以使用 #kind_of?(obj)
.
#fdiv(n)
return 浮动。 1.fdiv(2)
将 return 0.5(可能是你想要的)不像 1 / 2
returns 0.
我如何在 ruby 中写这个“检查某物是否为整数,如果不是 return 则为零。否则将其除以 2 和 return 结果。我
不明白如何让它检查它是否不是整数并且 return nil。将其写入函数
def halve(x) x / 2 end
在Ruby中,你可以使用instance_of?
to check if the object is an instance of a given class and is_a?
which returns true
if the given class is the class of the object ,或者如果给定的 class 是对象的超class之一。
In Ruby 多态性或 duck-typing 是首选,在这个例子中,我认为其中一种方法也是一个不错的选择。恕我直言 is_a?
比 Ruby 中的 instance_of?
更惯用,但这取决于您的具体用例。
def halve(x)
if x.is_a?(Integer)
x / 2.0
else
nil
end
end
请注意,我将 x / 2
更改为 x / 2.0
,因为假设 x = 3
然后 x / 2
会 return 1
但 x / 2.0
将 return 1.5
。有关详细信息,请参阅 Integer#/
的文档。
def halve(x)
x.is_a?(Integer) ? x.fdiv(2) : nil
end
如果传递的参数是该对象的 class,则 #is_a?(obj)
return 为真。您也可以使用 #kind_of?(obj)
.
#fdiv(n)
return 浮动。 1.fdiv(2)
将 return 0.5(可能是你想要的)不像 1 / 2
returns 0.