View
218
Download
5
Embed Size (px)
Citation preview
Apr 18, 2023
Assorted Ruby Details
The command line
irb starts an interactive Ruby interpreter ruby starts Ruby, with input from the command line
End with an end-of-file character (^D or F6) Not actually very useful
ruby filename.rb executes the given file ruby -e quotedString executes the quoted string
Example: ruby -e 'puts "The time is #{Time.now}" '
ruby -v tells you Ruby’s version number On Unix, if the first line of a Ruby file is
#!/usr/bin/ruby (or wherever ruby is located), the file can be executed by just entering the file name
Adding and removing methods
def adds a method; undef removes a method The only parameter to undef is the method name
To add an instance method, first “open” the class Example: class String; def nchars; length; end; end
There are several ways to add a class method to a class def Person.species; 'human'; end Within the Person class, you can use def self.species
You can add a method to individual objects def oscar.mood; 'grouchy' ; end
Numbers
Numbers may be written in decimal, hexadecimal, octal, or binary Decimal: 3405691582 Hex: 0xCAFEBABE or 0XCAFEBABE Octal: 031277535276 or 0o31277535276 Binary: 0b11001010111111101011101010111110
or 0Betc. For readability, numbers may contain (but not begin or
end with) underscores Examples: 3_405_691_582, 0b_111_101_101
Integers may be indexed to retrieve their bits Example: 5.step(0, -1) { |i| print 6[i] } 000110
printf and friends
printf format_string, value, …, value Formats are % length code for most things,
% length.fractional_digits code for floats %d decimal, %o octal, %x hex, %b binary,
%f float, %s string Negative lengths mean left justified Various other controls
Example: printf "pi = %8.4f", 3.141592 pi.=…3.1416
The (equivalent) methods sprintf and format take the same parameters as printf, but return the resultant string rather than printing it
Some File < IO methods gets – get a line of text getc – get a character of text (as ASCII; use .chr) ungetc – put back a character pos – the current character position in the input stream lineno – the number of times gets has been called pos= – move to the given position in the file rewind – move to the beginning of the file readlines – read the stream as an array of strings write(string), print(string), <<(string) – write at the current
position eof? – test if at the end of file closed? – test if the file has been closed
Some File methods rename(oldname, newname) – rename a file read(filename) – read the entire file as a single string readlines(filename) – read the entire file as an array of strings open(filename) –
with no block, a synonym for File.new with a block, the file is passed to the block, and automatically closed when
the block finishes exists?(filename) – test if a file with that name exists writable?(filename) – test if the file can be written directory?(filename) – test if the file is a directory zero?(filename) – test if the file is empty size(filename) – returns the size of the file mtime(filename) – returns the modification time of the file
Streams
The following constants refer to standard I/O streams: STDIN, STDOUT, STDERR
The following variables are initially set to the corresponding constants: $stdin, $stdout, $stderr
In addition, $defout (initially equal to $stdout) is where output with no specified destination is sent
Some String methods
ljust(length), center(length), rjust(length) – left justify, center, or right justify the string by padding with spaces
downcase, upcase, swap, capitalize – modify capitalization
include?(s_or_c) – tests whether the string includes the given string or character
index(s_or_c [, offset]) – returns the index after offset(or nil) at which the gives string starts
rindex(s_or_c [, limit]) – returns the last index (before limit), or nil, at which the string starts
Some more String methods
strip – remove leading and trailing spaces chop – remove the last character (also chop! is
destructive) chomp – remove the last character if it is a newline
(also chomp!) tr(chars, replacement) – replace the characters in
chars with the corresponding characters in replacement; accepts ch1-ch2 notation
Some Array methods
min, max – return the smallest or largest element uniq – return an array with no duplicate elements compact – return an array with no nil elements sort – return a sorted array & – perform an intersection (only elements in both) | – perform a union (elements in either) grep(regexp) – return elements matching the pattern push(element) – add the element to the end of the array pop – remove and return the last element shift – remove and return the first element
Chaining
Nondestructive methods can usually be chained Example: x = gets.chomp.strip.downcase
Many destructive methods return nil if they make no changes in the receiver, hence cannot be chained Example: x = gets.chomp!.strip!.downcase! will
result in a runtime error
Iterators
In Ruby, loops are considered low-level, to be used only when there is no appropriate iterator
collection.each – step through every element n.times – do a block n times n.downto(limit) – step from n down to and including
limit n.upto(limit) – step from n up to and including limit string.each_line – get each line from a string string.each_char – get each character (as an integer)
from a string
More iterators
collection.each_index – iterate over the indices of a collection collection.each_with_index – iterate over the values in a
collection, along with their indices Example: lineup.each_with_index { |man, pos| print pos, man }
hash.each_key – iterate over keys hash.each_value – iterate over values hash.each_pair – iterate over key-value pairs collection.select { |v| condition } – choose only items that meet
the condition collection.map { |v| transformation } – create a new collection
with the transformation applied to each item
The End