Getting ready for a technical interview involving Ruby? Check out this simple program that summarizes a few key features of Ruby.
# Simple node class class Node attr_accessor :next attr_accessor :data def initialize(n, data) @next = n @data = data end def to_s @data end end # Simple linked list class LinkedList private attr_accessor :root public def initialize @root = nil end def push(data) if @root.nil? @root = Node.new(nil, data) else new_node = Node.new(@root, data) @root = new_node end end def pop return nil if @root.nil? root = @root if @root.next != nil @root = @root.next else @root = nil end root end def print current = @root while not current.nil? puts current.data current = current.next end end end # Linked list usage list = LinkedList.new list.push("Hello 1") list.push("Hello 2") list.push("Hello 3") list.print puts "Removed: #{list.pop}" list.print puts "Removed: #{list.pop}" list.print puts "Removed: #{list.pop}" list.print puts "Removed: #{list.pop}" list.print # Print items on the same line print "same" print " line\n" # Case-when var = "test2" puts (case var when "test" "OK" when "test2" "OK2" else "OKELSE" end) # Hash table operations hash = {} hash["key"] = "value" hash[5] = 10 hash.each do |key, value| puts "Key: #{key} Value: #{value}" end hash.delete("key") for i in 0...hash.count do puts i end # List operations list = [] list[0] = "hey!" list.push "haha" puts list.pop list.each do |i| puts i end puts list.count # String operations str = "this" str.each_char do |c| puts c end puts "---" for i in 0...str.length do puts str[i] end # Do-while in ruby i = 0 begin puts "hello" i += 1 end while i < 5 # While i = 0 while i < 5 do puts "hi" i += 1 end # List length list = [1,2,3] puts list.length puts "----" # Select, reject, collect, inject =begin Use select or reject if you need to select or reject items based on a condition. Use collect if you need to build an array of the results from logic in the block. Use inject if you need to accumulate, total, or concatenate array values together. Use detect if you need to find an item in an array. =end a = [1,2,3,4] puts a.select{ |i| i % 2 == 0 } # Iterate each, true ones get added puts a.reject{ |i| i % 2 == 0 } # Iterate each, false ones get added puts a.collect{ |i| i**2 } # Iterate each, insert expression puts a.inject([]){ |accumulator, i| accumulator << i+1; accumulator } #Iterate each, add to accumulator each element # Sort puts a.sort{|a,b| b<=>a} #reverse order, not changing a puts %w(aaa bb c).sort_by{|a| a.length } # Print string ascii components str = "hello" puts str[0] str.length.times { |i| puts str[i].ord } # Yield example def yield_example(p) puts "Before yield" yield p # Call code block puts "After yield" end yield_example("hello") do |param| puts "Received: #{param}" end