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 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 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>'