Open In App

Undef keyword in Ruby

Last Updated : 23 Jul, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Ruby provides a special keyword which is known as undef keyword. This keyword used to avoid the current working class from responding to calls to the specified named methods or variable. Or in other words, once you use under keyword with any method name you are not able to call that method. If you trying to call such type of method, then you will get an error message which says that undefined local variable or method. You can also undefined multiple methods using a single undef keyword. 
Syntax: 
 

undef method_name

Let us discuss this concept with the help of the given examples: 
Example 1: 
 

Ruby




# Ruby program to illustrate the undef keyword
 
# Here portal is the method name
def portal
   
# Statement to be displayed
puts "Welcome to GeeksforGeeks portal !!"
  
end
   
# Calling portal method
portal
 
# Here language is the method name
def language
     
 puts "Learn Ruby!"
  
 end
  
# Undefine the language method
# Using undef keyword
undef language
  
# Calling language method
language


Output:  

Welcome to GeeksforGeeks portal !!
main.rb:26:in `<main>': undefined local variable or method `language' for main:Object (NameError)

Explanation: In the above example, we have two method, i.e, portal and language. Here, when we call portal method prints “Welcome to GeeksforGeeks portal !!”, but when we call language method it will gives an error massage that is undefine method ‘language’. Because we use undef keyword before language method that makes language method undefined.
Example 2: 
 

Ruby




# Ruby program to illustrate the undef keyword
 
#!/usr/bin/ruby
 
# Defining class Student
class Student
 
# initialize method
def initialize(id, name, branch)
 
# variables
@st_id = id
@st_name = name
@st_branch = branch
 
# Displaying values
puts "ID is: #@st_id"
puts "Name is: #@st_name"
puts "Branch is: #@st_branch"
puts "\n"
end
 
# Using undef keyword
undef st_id
end
 
# Creating objects and passing parameters
# to new method
obj1 = Student.new("1", "Amu", "ECE")
obj2 = Student.new("2", "Minu", "EEE")


Output:  

main.rb:24:in `<class:Student>': undefined method `st_id' for class `Student' (NameError)
    from main.rb:7:in `<main>'


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads