Alexandre Calaça
Alexandre Calaça's Blog

Alexandre Calaça's Blog

4  ways to determine whether a value is a number or not in Ruby

4 ways to determine whether a value is a number or not in Ruby

Alexandre Calaça's photo
Alexandre Calaça
·Jan 20, 2021·

3 min read

Subscribe to my newsletter and never miss my upcoming articles

Play this article

Table of contents

  • Intro
  • Introduction to the solutions
  • 4 approaches
  • Summing up:
  • Conclusion

How's it going, guys?

Intro

Today, I want to share with you 4 ways to determine whether a variable is a number or not in Ruby. The goal is to check if a specific value is a number or not.

Introduction to the solutions

In Ruby, there are often synonymous methods so you can use the one that sounds better. It's a matter of preference. This is not common in other programming languages, that's why some newcomers might feel uncomfortable.

This is just an introduction, it doesn't really mean that all the following methods are synonymous, but it's way of understanding how Ruby is flexible when it comes to the solutions of problems.

It's also possible to have many different ways to achieve the same or similar results, so, in this case, it's also a matter of preference and readability of the code.

4 approaches

Basically, there are 4 approaches (methods):

  • is_a?;
  • class;
  • === operator;
  • kind_of?;

The first approach - The is_a? method

Syntax: parameter.is_a?(Class) Parameter: The value that it is going to be checked Method: is_a? Class: In this case, the Integer class Return: It returns true or false

Let's check the examples:

irb(main):004:0> 2.is_a? Integer
=> true
irb(main):005:0> 2.is_a? Float
=> false
irb(main):006:0> 2.is_a? String
=> false
irb(main):007:0> "alexandre".is_a? Integer
=> false
irb(main):008:0> "alexandre".is_a? String
=> true

The second approach - The class method

Syntax: parameter.class Parameter: The value that it is going to be checked Method: class Return: It returns the name of the class

Let's check some examples:

irb(main):009:0> 2.class
=> Integer
irb(main):010:0> 2.4.class
=> Float
irb(main):011:0> "calaça".class
=> String
irb(main):012:0> "1".class
=> String

The third approach - The === operator

Syntax: Class === Parameter Class: In this case, the Integer class Approach: === (Triple equals operator) Parameter: The value that it is going to be checked Return: It returns true or false

Let's check some examples using the === (triple equals) operator

irb(main):001:0> Integer === 3
=> true
irb(main):002:0> Integer === "3"
=> false
irb(main):003:0> String === "alexandre"
=> true
irb(main):004:0> Array === ["calaça", "alexandre", 4]
=> true
irb(main):005:0> Array === 5
=> false

The fourth approach - The kind_of? method

Syntax: parameter.kind_of?(Class) Parameter: The value that it is going to be checked Method: kind_of? Class: In this case, the Integer class Return: It returns true or false

The kind_of? and is_a? methods are the same. Let's check the examples anyway:

irb(main):001:0> 1.kind_of? Integer
=> true
irb(main):002:0> 1.is_a? Integer
=> true
irb(main):003:0> 2.5.kind_of? Float
=> true
irb(main):004:0> 2.5.is_a? Float
=> true
irb(main):005:0> "alexandre".kind_of? Integer
=> false
irb(main):006:0> "alexandre".kind_of? String
=> true
irb(main):007:0> "alexandre".is_a? String
=> true

Summing up:

All the 4 approaches need a parameter, which is the value that it is going to be checked. 3 of the 4 approaches return a boolean value: kind_of?, is_a? and the === (triple equals) operator. The class method returns the name of the class.

The result can be achieved in many different ways, you can choose whatever it suits your needs.

Conclusion

In this article, it was possible to learn and practice 4 ways to determine whether a value is a number or not in Ruby [Ready].

Hope it was useful.

That's for today. Let me know if you have any questions.

By the way, you help me a lot if you like and/or share this article.

 
Share this