In this HackerRank Ruby Control Structures – Case (Bonus Question) problem solution, HackerRank is written in RoR and we have various classes defined in it. Some of them are
- Hacker
- Submission
- TestCase
- Contest
etc.
You have been given a function where an object which may or may not be of the above-mentioned type is sent as an argument. You have to use the case-control structure in Ruby to identify the class to which the object belongs and print the following output:
- if Hacker, output “It’s a Hacker!”
- if Submission, output “It’s a Submission!”
- if TestCase, output “It’s a TestCase!”
- if Contest, output “It’s a Contest!”
- for any other object, output “It’s an unknown model”
Note
- use case (switch statement of Ruby)
- use puts for printing
Problem solution.
def identify_class(obj) case obj when Hacker puts "It's a Hacker!" when Submission puts "It's a Submission!" when TestCase puts "It's a TestCase!" when Contest puts "It's a Contest!" else puts "It's an unknown model" end end
Second solution.
def identify_class(obj) # write your case control structure here case when obj.instance_of?(Hacker) puts "It's a Hacker!" when obj.instance_of?(Submission) puts "It's a Submission!" when obj.instance_of?(TestCase) puts "It's a TestCase!" when obj.instance_of?(Contest) puts "It's a Contest!" else puts "It's an unknown model" end end