C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
We use the puts, print and p methods in Ruby to display text (or other data types).
With stdin, we handle input from the console. Operators like << are helpful. And often a loop is used to create an interactive console program with a prompt.
An example. We begin with a simple program. Here the puts method writes a line to the console window. It writes each argument to a separate line.
Tip: To combine multiple parts on a single line, we can concatenate strings. We use << or + for this.
String: It sometimes is necessary to use the String constructor to convert integers to strings.
Array: When displaying an array, puts will place each element onto a separate line.
Based on: Ruby 2 Ruby program that uses puts value = 100 # Print values on separate lines. # ... Parentheses are optional. puts value puts("FINISHED") # Use << to append a string. puts "VALUE " << String(value) # Use + to append. puts "VALUE " + String(value) # Print all Array elements on separate lines. elements = [10, 100, 1000] puts elements Output 100 FINISHED VALUE 100 VALUE 100 10 100 1000
P method. Let us continue with the P method. This one is good for lazy programmers. It displays data in a literal way—it includes quotes around a string, for example.
And: P displays an Array or Hash on a single line. This is convenient and often a good choice.
Tip: As with other methods in Ruby, parentheses are optional. Usually "p" is used without parentheses.
Ruby program that uses p method # Use p method. p "cat" # Write an array. items = [5, 55, 555] p items # Write a hash. lookup = {"cat" => 4, "bird" => 2} p lookup # Use p to write two strings on one line. part1 = "HELLO" part2 = "WORLD" p part1 << "... " << part2 # Nil is displayed as nil. p(nil) Output "cat" [5, 55, 555] {"cat"=>4, "bird"=>2} "HELLO... WORLD" nil
Print. This method appends no newlines to text. We can thus use many print statements, one after another, on a single line. But we must also print a newline manually.
Tip: Print() is a good choice for lines that are built up in many steps. We can avoid concatenating strings ourselves.
Ruby program that uses print # Print statements on the same line. print "dog" print " is cute" print "\n" # Print entire-line statements. print "There are " << String(4) << " apples.\n" print "I ate a lemon.\n" # Print a multiline statement. print "***\nYou are a winner!\n***\n" Output dog is cute There are 4 apples. I ate a lemon. *** You are a winner! ***
Stdin. We can read a line from the console with $stdin.readline. This method returns a string. The stdin source can be configured but by default it is set to the keyboard on the console.
Ruby program that uses stdin # Read line from console window. line = $stdin.readline() # Display the string. puts "You typed: " << line Output cat You typed: cat
Interactive. An interactive console program can be developed with $stdin.readline. First we enter a while-true loop—this continues indefinitely.
Begin: We use a begin, rescue, ensure construct to handle errors and run some code after the selection is made.
Integer: We convert the text entered by the user into an Integer. This makes it easier to test for values.
Case: The case statement tests the integer we received. We handle the values 0 through 3 in special ways.
Ruby program that uses stdin, interactive loop while true print "Type a number: " line = $stdin.readline() begin # Convert string to integer. number = Integer(line) # Handle various cases. case number when 0 puts "Zero" when 1, 2, 3 puts "One to three" else puts "Other" end rescue # Let the loop continue. puts "Invalid" ensure puts "Done" end end Output Type a number: 0 Zero Done Type a number: 2 One to three Done Type a number: X Invalid Done
A summary. Ruby, as an interpreted language, is well-suited to developer or server tasks. For user programs, a compiled language is often a better choice.
But for developers, console programs are easy-to-maintain and efficient. With print(), puts() and the concise P method, we easily output text to an output stream.