Justin Mui

Justin Mui

Ruby Data Types (Part 1)

Slide Duration:

Table of Contents

Section 1: Introduction to Ruby
Setting Up Your Environment

22m 8s

Intro
0:00
Installing Ruby
0:06
Ruby-lan.org
0:07
Three Ways of Installing Ruby
2:26
Compiling Ruby-Source Code
3:02
Third Party Tools
3:28
Other Implementations of Ruby
4:48
Windows Installation
5:21
RubyInstaller.org
5:22
Mac OSX and Linux Installation
6:13
Mac OSX and Linux Installation
6:14
Setting Up Debian/Linux
6:42
Setting Up Debian/Linux
6:43
Installing HomeBrew
6:56
HomeBrew for MAC OSX
6:57
HomeBrew Wiki
9:44
Installing HomeBrew
10:02
Setting Up Mac OSX
11:46
HomeBrew, RVM, OSX-GCC Installer, and Install Ruby 1.9.3
11:47
Ruby Version Manager (RVM)
12:11
Ruby Version Manager (RVM) Overview
12:12
Installing Ruby Version Manager (RVM): http://rvm.io
12:35
Install RVM with Ruby
14:20
Install RVM with Ruby
14:21
Install OSX-GCC-Installer
16:18
Download and Install Package for Your OSX
16:19
Install Ruby 1.9.3
17:28
Install Ruby 1.9.3
17:29
Test It Out!
18:09
rvm-help & ruby-v
18:10
Example: rvm gemset create educator
18:52
Set It As Default!
20:47
rvm Use 1.9.3@educator--default
20:48
Intro to Ruby

22m 20s

Intro
0:00
What is Ruby?
0:06
What is Ruby?
0:07
Ruby Standard Library
0:52
Who Created Ruby?
1:22
Yukihiro Matsumoto
1:23
History
2:45
The Name 'Ruby'
2:46
Ruby v0.95
3:10
Ruby v1.0
3:56
English Language Mailing List Rubytalk
4:08
ruby-forum.com & the Mailing Lists
4:27
Ruby In The West
9:51
Ruby on Rails
10:39
The Pragmatic Programmer's Guide to Ruby
11:30
rubyonrails.org
13:34
Current Ruby
14:42
Ruby 1.8.7, Ruby 1.9.3, and Ruby 2.0
14:43
Why Programmers Enjoy Ruby?
15:40
Why Programmers Enjoy Ruby?
15:41
Ruby Is An Interpreted Language
16:21
Ruby Is An Interpreted Language
16:22
What Is It Used For?
16:50
What Is It Used For?
16:51
Ruby is Object-Oriented
18:17
Example: 5.class
18:18
Example: 0.0.class
18:54
Example: true.class
19:03
Example: nil.class
19:12
Object Class
19:19
BasicObject
19:20
Example
19:52
Superclass
20:50
Fixnum → Integer → Numeric → Object
21:32
Basic Tools for Using Ruby

27m 44s

Intro
0:00
Interactive Ruby
0:08
irb: Interactive Command-Line Environment
0:09
Example
0:49
irb-v
0:50
irb-executes terminal
1:02
1.9.3-p125 > 'hi'
1:09
Live Demonstration
1:31
Why Use Interactive Ruby?
2:21
Why Use Interactive Ruby?
2:22
RDoc
3:05
RDoc
3:06
Ruby Core Documentation
3:32
Ruby Core Documentation: Example
5:30
Ruby Core Documentation: Markup
6:12
Ruby Core Documentation: Headings
7:44
Coding Example: RDoc
9:30
Why Use RDoc?
13:02
Learning Core Ruby Functions
13:03
Generating RDoc
15:31
rdoc-help # usage
15:32
Ruby Interpreter
15:57
ruby -- help
15:58
ruby [switches] [-] program [arguments]
16:16
Example: How to Run a Ruby Script
16:28
Rake
18:38
Rake Overview
18:39
Ruby Core Documentation: Rake
19:46
Coding Example: Rake
23:14
Why Was It Created?
24:30
Why Was It Created?
24:31
Lesson Summary
25:13
Lesson Summary
25:14
IDE/script Editors: MacVIM
26:24
Ruby Specifics

20m 45s

Intro
0:00
Ruby Specifics
0:06
Comments
0:51
Hashtags
1:00
Example
1:23
Multi-Line Comment
2:04
Example
3:10
RDoc Comments
4:02
When do you generate an Rdoc?
4:10
Headings and subheadings
4:24
Examples
4:48
Generating an Rdoc - example
4:50
Common Code Conventions
6:28
For every tab use two spaces indentation
7:38
Never use tabs
7:42
Common Code Conventions (Cont.)
8:18
Camel case
8:20
Snake case
9:18
Identifiers
9:44
Constants begin with CAP letter
10:00
Examples
10:10
Identifiers with Different Scoping
10:26
Global
10:34
Instance Variable
10:40
Class Variable
10:46
Examples
10:56
Reserved Keywords
12:22
Do not use reserved keywords in code
12:25
Parentheses are Sometimes Optional
13:04
Functions do not require parentheses
13:16
When in doubt, use parentheses
13:54
Examples
14:10
Newlines Are Statement Terminators
14:20
Examples
15:10
Continuation with a Period
16:20
Period means continue to next line
16:46
Multiple Statements Allowed on a Single Line
17:38
Try not to use semi-colons
17:58
Code Blocks
18:20
Use code blocks for one liners
18:28
Examples
18:40
Recommended for multiple lines
20:16
Ruby Data Types (Part 1)

29m 37s

Intro
0:00
Overview
0:10
Ruby Data Types
0:10
Numbers
0:16
Strings
0:18
Symbols
0:24
Numbers
0:30
Numeric
0:44
Float
0:50
Complex
0:56
BigDecimal
0:58
Rational
1:00
Integer (most popular) - Fixnum and Bignum
1:06
Fixnum stores 31 bits
1:18
Bignum stores larger bits
1:24
All number objects are instances of Numeric
1:28
Integer Literals
2:28
Represent whole-numbers
2:40
Examples - Different bases
2:42
Binary
3:04
Octal
3:30
Hexadecimal
3:44
Examples
4:06
Floating Point Literals
4:45
Examples
4:58
e-value can be capital or lowercase
5:30
Example
5:44
Strings
6:16
Mutable objects
6:18
Used for inserting and deleting text, searching, and replacing
6:26
String Rdoc
6:46
Definition
7:00
String Literals
8:20
Single-Quoted
8:28
Double-Quoted (most used)
8:50
Example
9:32
Escape Sequences
11:10
Newline
11:16
Tab
11:22
Double quote
11:28
Blackslash
11:36
Interpolation
11:50
Sprintf
13:48
Unicode Escaping
14:38
Example
15:50
Delimiters
16:18
Here Documents
17:18
Example
17:25
String Operators
19:58
Concatenation
20:03
Appending
20:40
String Equality
21:04
Example
21:24
Substrings
22:00
Range object (inclusive)
22:22
String Encoding
24:52
Differences between Ruby 1.8 and 1.9
24:56
Symbols
26:02
Definitions
26:04
Examples
26:46
When to use symbols
26:54
Symbols and Strings
27:42
Symbols Rdoc
28:22
Ruby Gems

25m 50s

Intro
0:00
RubyGems
0:08
What are RubyGems?
0:24
RubyGems.org
0:44
How RubyGems are used
2:06
Java's jar utility
2:50
Unix/Linux's tar utility
3:06
What is a Gem?
3:16
Definition of Gem
3:20
Version
3:34
Date
3:44
Author
3:50
Description
5:58
What Are the Uses?
4:18
Uses for Gems
4:22
Installation
5:06
How to install RubyGems
5:30
Updating to the Latest Ruby Gems
5:54
Testing
6:22
Example
6:34
Installing Rake
7:24
Example
7:46
Verifying
9:22
Example
9:56
Structure
10:56
gem.gemspec
11:30
Specification
13:40
What is in the gem?
13:42
Who made it?
13:50
Update gem version
13:58
Example
14:10
Create Our First Gem
17:20
Steps involved
17:28
RubyGems Guides
17:36
Example
20:02
Steps Review
18:56
Create Our First Gem (Cont.)
23:08
Building the gem
19:38
Example
20:00
Installing the gem
22:32
Run it
22:52
Publish it
23:04
Get Some Gems!
25:06
rake
25:14
rails
25:19
fastercsv
25:25
koala
25:37
Ruby Data Types (Part 2)

40m 24s

Intro
0:00
Ruby Data Types
0:15
Boolean
0:21
Arrays
0:27
Hashes
0:33
Range
0:37
Boolean Types
0:42
TrueClass
0:56
FalseClass
1:12
NilClass
1:18
TrueClass Examples
2:48
FalseClass Examples
3:22
Arrays
4:16
Ordered collection of objects
4:22
Can hold different objects
4:32
Starts at index 0
4:50
Array of Strings
5:50
Example
5:52
Arrays (Cont.)
6:20
Can be created using literals
6:22
Can be created using constructors
6:54
Position and indexed value
8:04
Negative Indexed Values
8:56
Shift and Unshift
10:18
Push and Pop
11:38
.delete method
12:38
Addition and Subtraction
13:32
Union and Intersection
14:48
Insert
15:52
Iteration
16:52
Arrays Rdoc
17:48
Hashes
22:08
Maps and Associative Arrays
22:44
Created using the constructor
22:56
Created using a hash literal
24:02
Stored in a hash table
25:26
Example
25:50
Accessing Key-Values
27:46
Deletion
29:48
Iteration
31:04
Hashes Rdoc
32:04
Ranges
36:40
Two dots are inclusive
36:57
Three dots are exclusive
37:16
Example
37:50
Ranges Rdoc
38:24
Objects

1h 5m 46s

Intro
0:00
Objects
0:10
Object References
1:36
Ruby Core
2:16
Example
4:30
Creating New Objects
6:00
New Method
6:08
Initialize Method
6:31
Example
7:18
Garbage Collection
9:54
Global values always reachable
10:25
Object Identity
11:08
Every object has an object identifier
11:20
Object identifier is constant and unique
11:30
Example
11:54
Object Class
12:58
Class method
13:10
Superclass method
13:28
Object Testing
14:46
is_a?
15:49
respond_to?
16:26
String and Regexp
18:10
Comparing two object instances
20:06
Example
23:30
Object Equality
25:48
Comparing objects
25:54
equal?
25:58
Popular way to test for equality
27:16
Opposite way to test for equality
27:25
Arrays
28:30
Hash
29:42
Case equality operator
30:47
Class tests
31:16
Range tests
31:48
Symbol tests
32:32
Object Conversion
33:14
Explicit conversion
33:54
Implicit conversion
35:00
Example
36:12
Object Conversion: Kernel Module
38:22
Array
38:38
Float
39:26
Integer
39:58
String
40:10
Example
40:34
Object Conversion: Coerce
42:00
Used for mixed type numeric operations
42:08
Example
43:40
Object Conversion: Boolean
47:42
Every object has a boolean value
47:44
Example
48:54
Object Copying
50:52
dup
50:58
clone
51:03
Example
51:42
Object Freezing
57:36
Object Marshaling
58:38
Save state
59:04
Load state
59:27
Example
59:32
Tainted Objects
1:01:50
taint
1:02:08
farm field
1:02:12
Untrusted Objects
1:04:06
trust
1:04:24
untrust
1:04:34
untrusted?
1:04:42
Loops

38m 54s

Intro
0:00
Loops
0:12
while and until
0:48
for and in
0:54
iterators
1:04
enumerable in objects
1:06
While-loop
1:14
Will keep going is condition is true
1:18
Until-loop
2:58
Will keep going until condition becomes true
3:06
Single Expression Loops
4:20
Compact form
4:30
Expressed as a modifier
4:42
Do-While Loop
5:52
Executes body first
6:06
Do-Until Loop
7:54
Similar to do-while loop
7:58
Using Break Inside Loops
8:54
break
8:58
For-In Loop
11:56
for-loop
12:06
var
12:34
collection
12:54
body
13:00
Examples
13:08
Examples (Cont.)
15:54
Nested loops
16:40
Numeric Iterators
18:32
upto
18:40
downto
18:42
times
18:48
Examples
20:28
External Iterators
21:00
Enumerator class
21:04
Rdoc
21:16
Enumerables in Objects
24:35
Enumerable is a mix-in
24:41
RDoc
25:24
Commonly Used Enumerables in Objects
27:01
Array
27:19
Hash
27:51
Range
28:47
Examples
29:29
Enumerables in Objects (Cont.)
31:13
File Processing
31:15
Example
31:45
Enumerables in Objects (Cont.)
33:07
collect
33:23
select
34:11
reject
34:59
inject
35:29
Strings

28m 30s

Intro
0:00
Strings
0:08
Why do you want to get familiar with strings?
1:00
String Creation
1:16
new
1:28
empty?
1:50
length or size
2:10
Example
3:12
String Manipulation
4:40
slice
4:56
square brackets [ ]
5:02
token
5:40
[fixnum]
6:52
offset and length
8:40
chaining
12:42
String Insertion
12:56
insert
12:58
positive or negative index
13:46
String Updates
15:24
[token]
15:36
Examples
16:40
chop or chop!
17:54
chomp!
18:56
gsub
20:28
String Deletion
21:38
delete
21:38
String Reversal
22:46
reverse
22:52
String Manipulation
23:16
split(pattern=$, limit)
23:22
pattern
24:10
limit
24:15
upcase or upcase!
25:28
downcase or downcase!
26:02
swapcase
26:24
Incrementing Strings
27:26
next or next!
27:32
Check Out the Other Lessons
28:00
Ruby Data Types Part 1
28:12
Regular Expressions
28:18
Regular Expressions

33m 27s

Intro
0:00
Regular Expressions
0:10
How to create a regular expression
0:48
What goes inside
1:36
Metacharacters
3:10
Bracket expressions
3:14
Quantifiers
3:18
Anchors
3:20
Metacharacters
3:30
word and non-word characters
4:04
digit and non-digit characters
4:44
hexdigit and non-hexdigit characters
4:56
whitespace and non-whitespace characters
5:08
Examples
5:24
POSIX Bracket Expressions
7:48
Non-POSIX Bracket Expressions
9:48
Bracket Expression Examples
10:58
Quantifiers
12:34
Examples
13:30
Character Properties
17:24
Similar to POSIX bracket classes
18:22
More Character Properties
18:48
Examples
19:32
Anchors
20:08
Examples
21:14
Regular Expression Matching: Regexp Object
22:40
match
22:51
Regular Expression Matching: String Object
24:14
match
24:26
Regular Expression Modifier Characters
25:14
pat
25:38
Example
26:42
Regular Expression Modifier Objects
27:14
Example
28:38
Regexp Rdoc
30:40
Arrays

14m 35s

Intro
0:00
Arrays
0:12
Creating an Array with a Block
0:50
Alternative Ways to Create an Array
3:52
Checking the Class
5:14
Iterate through the array
5:26
Call the class method
5:28
Array Shortcuts
6:38
at(index)
6:44
delete_at(index)
7:28
first(n)
8:28
last(n)
9:28
Removing Duplicates
9:58
uniq or uniq!
10:04
Sorting the Array
10:48
sort or sort!
10:54
Getting the Index
11:35
index
11:56
rindex
12:38
Multidimensional Arrays
12:56
flatten
13:33
Check Out the Earlier Lesson
14:16
Ruby Data Types Part 2
14:26
Hashes

27m 48s

Intro
0:00
Hashes
0:12
Creating Hashes
1:18
Setting a Default Value
2:24
Accessing Hashes
4:16
Accessible by keys or by values
4:28
Keys must be unique
4:36
Creating Hashes
5:16
Comma-separated list
5:42
Hash rocket
8:28
Examples
10:16
Iterating Keys and Values
11:43
each_key
12:04
each_value
14:04
Merging Hashes
16:10
merge(other_hash)
16:20
Sorting Hashes
18:46
Replacing Hashes
20:57
replace(other_hash)
21:18
Converting Hashes to Other Classes
22:04
to_a
22:22
to_s
23:22
Example
24:34
Check Out the Earlier Lesson
27:22
Ruby Data Types Part 2
27:32
Math Operations, Part 1

28m 47s

Intro
0:00
Math Objects
0:12
Numeric
0:26
Integer
0:38
Float
1:02
Fixnum
1:14
Bignum
1:56
Rational
2:04
Math
2:24
Math Operations
2:36
Example
3:14
div(numeric)
4:54
divmod(numeric)
6:30
modulo(numeric)
7:23
quo(numeric)
8:18
remainder(numeric)
9:35
Operation Precedence 1 of 3
10:35
Operation Precedence 2 of 3
13:18
Operation Precedence 3 of 3
14:28
Abbreviated Math Operations
14:54
Move the operator in front of the equal sign
15:52
Numbers
16:36
Numeric Class
17:06
Numeric Methods
18:41
ceil
18:52
floor
19:32
round
19:50
Example with Numbers
20:20
Numeric Methods (Cont.)
22:20
truncate
22:28
num.step(limit, step)
23:02
Numeric Rdoc
25:26
Math Operations, Part 2

28m 51s

Intro
0:00
Math Operations
0:12
Math Module
0:24
Rational Numbers
0:44
Complex Numbers
0:52
Prime Numbers
0:58
Matrices
1:06
Math Module
1:12
PI and E
1:32
Math Module Methods
2:47
atan2(x,y)
2:56
cos(x)
3:14
exp(x)
3:44
Examples
4:38
log(x)
5:44
log(num, base)
6:34
log10(x)
7:04
sin(x)
7:34
sqrt(x)
7:52
tan(x)
8:06
Math Functions: Part 1 of 3
8:12
Math Functions: Part 2 of 3
9:32
Math Functions: Part 3 of 3
10:19
Math Module Rdoc
11:25
Rational Numbers
13:23
How to use
14:06
Example
15:02
Mathematical Ruby Scripts (Mathn)
16:25
Example
17:28
Complex Numbers
18:26
polar
18:56
rect
19:10
Complex Number Examples
19:18
Prime Numbers
20:14
each(ubound=nil)
20:44
prime?
21:22
Example
21:58
Matrices
23:15
build(row_size, column_size=row_size)
23:44
Example
24:44
Matrix Rdoc
24:58
Dates and Times

26m 1s

Intro
0:00
Dates and Times
0:12
Time Class
0:38
Methods of the Time Class
1:43
now
1:44
at(time)
2:10
Epoch & Unix Timestamp Conversion Tools
3:19
Components of a Time
5:07
Convert Time to an Array
5:54
to_a
6:08
Creating a New Time
6:48
Time.local
7:08
Year is required
7:22
Time.utc
8:12
What should be specified
9:30
More Methods of the Time Class
10:16
strftime(string)
11:26
RDoc
12:50
Date Library
16:46
Initializing a New Date
17:08
Parsing Dates
18:28
parse(string)
18:42
Today's Date
19:19
Date.today
19:22
Tomorrow's Date
20:22
Next
20:28
Next week
21:22
Count Down
21:26
Count Up
22:37
Components of a Date
23:20
Converting to Datetime
23:48
to_datetime
24:00
Initializing a Datetime
24:24
Converting to Time
25:23
self.to_time
25:32
Methods: Part 1

31m 24s

Intro
0:00
What is a Method?
0:12
Basic Method
0:58
Return Value
4:37
return
4:46
Factorial Example
6:18
Example
8:46
Return Two Values
10:06
Set the return keyword
10:14
Collected and returned as an array
10:28
Undefining Methods
11:22
undef method_to_undefine
11:44
Example
12:32
Method Names
13:02
Begin with lowercase letter
13:16
Separate longer words with underscores
13:26
Can end with equal sign, question mark, or exclamation point
14:03
Equal sign
14:26
Method Names with Question Mark
14:44
empty?
15:24
Method Names with Exclamation Point
16:01
mutators
16:12
! means use with caution
16:46
Method Aliases
18:05
alias new_method existing_method
18:42
Operator Methods
20:00
Operators
20:02
Array Operators
20:10
Unary Operators
20:32
Binary Operators
20:40
Example
21:28
Methods and Parentheses
25:00
Optional in most cases
25:20
Required in other cases
27:13
Methods and Blocks
27:54
Associated with blocks
28:18
block_given?
28:26
yield
28:36
Example
29:24
Methods: Part 2

20m 11s

Intro
0:00
Methods with the Unary Ampersand Operator
0:14
&
0:34
Block to a Proc
0:56
Example
2:02
Proc object
3:58
Example
5:04
Methods with Default Values
5:54
Example
7:12
Methods with variable-Length Arguments
8:05
How to create it
8:36
Example
11:06
Using Hashes with Arguments
13:02
Multiple arguments
13:08
Solution
13:30
Example
14:56
Rdoc
18:12
Classes: Part I

26m 51s

Intro
0:00
Classes
0:10
Definition of a class
0:14
Class represents a container
0:32
Can be reused
0:46
Creating our First Class
1:00
Keyword class will create new class
1:06
Name must begin with capital letter
1:30
Instantiating Our First Class
2:46
New will create a new instance of class
2:58
Initializing Values
3:58
Definition of def
4:14
Instance method
5:08
Example
7:02
Defining the to_s Method
8:24
Creating a string representation class
8:34
Example
10:54
Self in the Class
12:16
Definition of self
12:26
Example
13:54
Accessor Methods
15:52
getter methods
16:22
Example
17:00
Setter Methods
18:00
Mutator methods
18:02
Example
19:46
Automating Getter and Setter Methods
21:10
Defined in the module class
21:30
attr_reader
21:54
attr_writer
22:48
attr creates getter and setter methods
23:50
Example
24:28
Notes on Ruby's Accessor Methods
25:32
Classes: Part II

26m 42s

Intro
0:00
Defining Operators
0:10
You can define arithmetic operators
0:32
Unary Operators
0:46
Let's define operators in our class!
0:56
Example
2:52
Class Methods
6:24
Examples
6:56
Opening Up the Class
9:38
Adds an additional method
9:54
Examples
11:04
Array and Hash Access Method
15:40
Use square brackets
16:02
Define your own has access method
16:08
Example
16:56
Enumerating The Values
18:40
Define the each iterator
18:40
Testing for Equality
19:36
Class Triplex
19:50
Examples
20:54
Constants
25:00
Usually defined at the top of class
25:24
Classes: Part III

53m 36s

Intro
0:00
Class Variables
0:14
Example
2:16
Ruby Glass Jar Example
8:50
Class Instance Variables
10:20
Instance variables of class objects
10:46
Advantage of class instance variables
11:18
Examples
11:30
Method Visibility
16:16
Three types of method visibility
16:26
Public methods
17:34
Private methods
17:38
Protected methods
18:04
Invoking Method Visibility
19:21
Public , Protected, and Private Visibility
19:22
Invoking Method Visibility With Arguments
21:39
Example: Invoking Method Visibility
22:12
Class Visibility
23:31
Instance and Class Variables are Private
23:32
Constants are Public
24:00
Makes Existing Class Methods Private
24:27
Makes Existing Class Methods Public
25:08
Example: Class Visibility and class GlassJar
25:43
Subclassing
27:08
Subclassing: Subclass and Superclass
27:09
Example: Subclassing
29:43
Inheritance
30:05
Inheritance
30:06
Example: Inheritance
31:25
Subclassing and Inheritance
31:34
Descendants
31:41
Ancestors
31:56
More On Descendants and Ancestors
32:08
Extending a Class
33:27
Extending a Class
33:28
Coding Example: Extending a Class
34:24
Overriding a Method
36:41
Overriding a Method
36:42
Coding Example: Overriding a Method
37:18
Modifying Methods with Chaining
38:52
Modifying Methods with Chaining
38:53
Super
39:25
Coding Example: Modifying Methods with Chaining
39:51
The Singleton Pattern
44:52
Introduction to The Singleton Pattern
44:53
Setting Up Singleton
45:28
The Instance Method
45:58
Rdoc for Singleton: Usage
46:23
Rdoc for Singleton: Implementation
47:45
Coding Example: Singleton
49:38
Modules

24m 19s

Intro
0:00
Modules
0:04
What is Modules?
0:05
Modules Examples
0:40
Modules: Mix-Ins
3:31
What is a Mix-in?
3:32
Modules: Namespace
4:07
What is a Namespace?
4:08
Why Use a Namespace?
5:13
Example of a Namespace Module
5:59
Example of Mixing in The Module Into the Global Scope
6:00
Modules: Creation
7:04
How to Create a New Module?
7:05
Modules: Usage
8:19
How to Use It?
8:20
class Poker & class Bridge
9:13
Creating Our Module as a Mix-In
9:41
Example of a Module Using Instance Methods
9:42
Coding Example
10:20
Creating Our Module as a Namespace
12:11
Implement Class Methods for the Module
12:12
Coding Example
14:56
Loading Our Module
19:46
Loading Our Module Overview
19:47
Require & Load
20:15
Coding Example: Loading Module
20:48
Lesson Summary
23:36
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to Ruby
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
Since this lesson is not free, only the preview will appear on your website.
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.
  • Learn at your own pace... anytime, anywhere!

Ruby Data Types (Part 1)

  • This lesson will go over common ruby data types. The first part goes over numbers, strings, and symbols.
  • All number objects are instances of Numeric
  • Strings are mutable objects
  • RDoc: http://www.ruby-doc.org/core-1.9.3/String.html
  • Strings with double-quotes allow more flexibility than with single-quotes
  • String interpolation allows global, instance, or class variables
  • Strings in 1.9 are a true sequence of characters
  • Ruby contains a symbol table that stores names for all classes, methods, and variables
  • RDoc for Symbols: http://www.ruby-doc.org/core-1.9.3/Symbol.html

Ruby Data Types (Part 1)

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Overview 0:10
  • Ruby Data Types 0:10
    • Numbers
    • Strings
    • Symbols
  • Numbers 0:30
    • Numeric
    • Float
    • Complex
    • BigDecimal
    • Rational
    • Integer (most popular) - Fixnum and Bignum
    • Fixnum stores 31 bits
    • Bignum stores larger bits
    • All number objects are instances of Numeric
  • Integer Literals 2:28
    • Represent whole-numbers
    • Examples - Different bases
    • Binary
    • Octal
    • Hexadecimal
    • Examples
  • Floating Point Literals 4:45
    • Examples
    • e-value can be capital or lowercase
    • Example
  • Strings 6:16
    • Mutable objects
    • Used for inserting and deleting text, searching, and replacing
  • String Rdoc 6:46
    • Definition
  • String Literals 8:20
    • Single-Quoted
    • Double-Quoted (most used)
    • Example
    • Escape Sequences
    • Newline
    • Tab
    • Double quote
    • Blackslash
    • Interpolation
    • Sprintf
    • Unicode Escaping
    • Example
    • Delimiters
    • Here Documents
    • Example
  • String Operators 19:58
    • Concatenation
    • Appending
    • String Equality
    • Example
  • Substrings 22:00
    • Range object (inclusive)
  • String Encoding 24:52
    • Differences between Ruby 1.8 and 1.9
  • Symbols 26:02
    • Definitions
    • Examples
    • When to use symbols
  • Symbols and Strings 27:42
    • Symbols Rdoc

Transcription: Ruby Data Types (Part 1)

Welcome back to educator.com.0000

Today's course is Ruby datatypes.0001

This is the Part 1 lesson.0004

We are going to go over three datatypes today.0006

The first one is numbers, and then strings, and then symbols.0012

First, we are going to look at number.0027

There are a lot of children that inherit from the numeric class.0029

Numbers have a lot of objects that deal with them.0036

First, we have our Float class.0042

It's a child of Number.0046

And then we have this Complex object, BigDecimal, RationalObject, Integer.0049

So we have five objects: Float, Complex, BigDecimal, Rational, and Integer.0062

Integer has two children that inherit from it.0069

We have Fixnum, and then we also have Bignum.0075

All of these number objects are actually instances of Numeric.0081

The first one is Float.0093

One thing that you will notice about Float is that it uses native floating-point representation of whatever platform it's on.0099

The other big on is Integer; that is going to be the most popular one to use.0110

These are just regular digits.0117

Fixnum stores a smaller amount--31 bits.0121

If it's ever an integer that is greater than 31 bits, it is going to be upgraded to a Bignum object.0133

We are going to look at the Integer class now--at Integer literals.0146

This is part of the Integer class, and they represent whole numbers.0149

Here we have a zero--that's an integer--1, 2, 3, and this huge number here--that's all part of the integer class.0160

There are also different types of integers based on the base type.0175

So, we look at binary base-2--you can actually do that with this.0179

Our base-2 object--you want to look at this 0b.0188

When you call that 0b, that knows it's a base value, and it is going to render 375.0194

Now, we look at the Octal class.0205

That's base-8.0209

For example, you call up 0, 5, 6, and 7--it's going to be 375.0215

And then we look at our hexadecimal--our base-16.0220

We have our 0x177--it's going to be 375, too.0229

Let's do an example of that.0236

If I do...0, 3, 175...you have 253...you notice this is part of the Octal.0243

I could also do Binary, so it would be 0000...10--it's two.0259

I could also do hexadecimal--0xa--you would get a ten.0269

So, those are the integer literals.0279

The next thing we want to look at is the floating-point literals.0285

This is part of the Float class.0290

Examples of a Float: this is 0.0--it's a floating-point value--3.14159--notice that both of these have a period there--that's how it knows to make it a Float object.0293

Then we have this E value, which makes it ten cubed.0314

Now, the exponent value can be the letter e or capital E.0320

There is a max constraint to floating-point.0335

I go here, and I put in floatmax--it's actually a pretty hefty number.0341

It might say 1.79, but you have to look at this e--that's e to the power of 300a.0352

So this floating-point value can go quite high.0357

It should handle plenty of your cases.0361

The next thing we are going to look at is strings.0372

Strings are mutable objects: you can change them.0375

They have a lot of operators and methods.0381

There are definitely a lot of things you can do with strings.0384

Inserting and deleting text...you can do searching in there...replacing text...and there are a lot more options.0387

Check out the RDoc.0397

As you see here, it says, "A String object holds and manipulates an arbitrary sequence of bytes--typically representing characters."0406

"String objects may be created using String::new or as literals."0416

"Because of aliasing issues, users of strings should be aware of the methods that modify the contents of a String object."0425

Typically, methods ending in this exclamation mark--or bang value--that means modify their receiver, "while those without the '!' return a new String."0431

"However, there are exceptions, such as String # [] =."0442

Now this "!"--what it will do is modify the existing object, so when you have that "!" value, it is not going to create a new object.0450

Some interesting things here: new--this is our constructor to make a String object; try_convert--this, I believe, is only 1.9.3, but what this does is, if I put in a string in this value, if it allows it to convert that to String, it will be String, but if it doesn't allow it...like this regular expression object...it will just say, "This is nil. I'm not going to allow that in."0459

Let's look at some of the string literals.0499

You have your single-quoted strings--you will notice that it has single quotes in our value.0502

Notice, with this one, we have to put a slash in front, because it's another single quote in a single quote.0517

The most popular string literal you will be using is the double-quoted one.0530

There is a lot more flexibility--you don't have to worry about the slash here--you have your double quotes.0533

This should all be on one single line.0541

If you want to do a new line with that, it will not work0546

You can try it out; we can test it.0552

But remember, the new line is going to terminate this.0554

So, let's open a new one.0562

First, I want to look at the single quotes.0565

You can actually span these lines to multiple lines.0569

I have an example: 'This is my sentence.'0572

Let's say I want to make a paragraph with this.0577

I can use this forward slash here and have that spanned even further.0581

'This is my second sentence.'0588

I can keep going on to more sentences.0600

What I want to show you is that, when I press Return here, this is when it's going to actually end it.0606

Notice here--this is a Return--this forward slash is allowing me to expand this all into one line.0611

There is no end break here.0619

Also, for double-quoted values, let's try the example we just tried.0623

It might cause an issue...but if I do "This is my sentence"...have a double quote...press Return...interesting! Look, it actually puts a quote here!0630

This says, "I know you haven't ended your string yet; continue until you do it."0640

"This is my second sentence."0646

I put my double quote; press Return; and look there! It actually recognized it and put a new line.0649

So it does allow it...that's interesting.0656

Let's look at some of the string literals; we just saw one, actually.0668

For the escape sequences, we just saw the new line.0671

You could also do the tab.0677

It's going to add another space--a tab--in your actual quote.0681

We have our double quote: you notice that all it is, is we are putting this slash in front to make it a double quote, and we also have our backslash.0686

The reason is, if we want to put double quotes in a double-quoted string literal, you have to have that slash...you have to add a backslash to display that.0697

One very fancy thing with Ruby is that they support interpolation in the strings.0711

We're going to go over that now.0721

For example, we have this total=100+150.0722

There is our code--but I want to get this value and print it out.0725

So, look at my next one: I put the total in this hashtag and this curly brace--this is going to allow me to put Ruby code in here.0733

I can put Ruby into these codes.0749

It's smart enough to say, "Hey, this total value is already being stored in this identifier, total, but it has a value of 350"--it's going to know that it is an integer value and make that a string so it can read it.0756

So, the end output will say the total is 350.0773

Again, you could use this with anything.0778

The scope--for example, it worked for globals, instance, class variables...depending on the scope you're on, you can use a dollar sign total...this instance, you can even put..."at" total, or class variable,0785

I want to do that here, too...total.0813

One very interesting thing about Ruby is that it does allow sprintf.0826

Printf/sprintf are very popular methods that are used in many other languages.0834

It is not something you want to use in Ruby, but it is there; it gives you the flexibility to use it if you want to.0841

It does help to make the transition easier to Ruby.0848

So, we have our sprintf--our string value--here, and we have our percentage, which says this is a Float.0852

And we can just pass in math, the two dots, two dots, and pi, and that will render this value into the Float.0861

Strings also support Unicode escaping.0873

You just have to add this slash, and the u, plus the four-digit hexadecimal digit.0881

In this case, we have 0041; it says "A".0890

But interestingly enough, with the string interpolation, we can actually remove the leading zeros.0896

Here, we didn't even put 0041; it's just forward slash, u, we have our hash, curly brace, and we just put 41.0916

It's smart enough to know that you are using leading zeros there--"I can interpolate that in and render out the same tag--I can render out the A value."0925

Let's go ahead and try it out in our terminal here.0940

For example, we can just make it ourselves, and just use 0024--notice this dollar sign--but I can also use the interpolation, and it will also show a 24 value.0949

Also, you don't need to use quotes; you can also show it using just delimiters.0978

It's very flexible: you can use parentheses, square brackets, curlies, greater than/less than, dash-dash, pipes...0986

Anything...particularly special characters, where you have another one at the end--it will support it.0998

For example, here you have the single-quoted string rule.1003

We also have a double-quoted string rule.1010

Notice, the single quote is in lowercase; the capital Q means it's double-quoted.1014

And another one that follows the double-quoted string rule--that makes it very simple--is this percentage value.1020

Before we do that, I do want to show you some...1036

See if it can go very quickly on that...so, if I say this is a string...you will notice that this is following the single-quoted values.1041

But let's say this is value, and I want to put my token in here, notice it takes it literally?1055

Token is just taken as part of that text.1068

But I can say token=abc, and when I take that exact same one and make it part of the double-quoted rules, it will interpolate it: so it wil say "value is abc."1075

Next, we want to go over the string literals.1091

We are going to look at heredoc.1096

This is used for multiple-line documents.1102

It makes it very easy to show all your text, because you can preserve all the spaces and things that you put between it.1108

To start it off, notice, I use this "less than", "less than"1121

This token tells Ruby, "Hey, this is a heredoc; this is a comment here; I'm not going to worry about how I'm going to parse this out," because once I put this "less than", "less than" here, that is saying this is a string.1132

"So this string--I'm going to store it as a value until I see this here token again."1154

That is where we see here also.1161

So, it says, "Any value that is between these two pieces--I'm going to take that as a string value, and I'm going to store it into this lorem ipsum text."1164

I wouldn't recommend using heredoc; it's very popular in other languages, but it's not a Ruby convention that is really followed.1181

But there are reasons to use it, especially if you have a big text piece--so use it at your own flexibility.1187

Next, we are going to look at public string operators.1195

This one is just concatenation.1201

I have our string: hello, space, hello world.1204

When Ruby sees this, it's going to create a new object that has our hello world here.1210

Now, this object that it creates--it isn't going to append it to hello, to the quote, or world; it's going to create a brand-new object and return that.1219

Now, if you use appending, and use these less than-less than, it will actually store that at the end of the value.1236

This x value appends this quote, and it appends world; you will get the exact same value, hello world, but this is actually part of the x object.1244

Here is another operator string quality: you have your equal equal, and your not equal.1262

Equal equal just checks if two values are the same.1271

Not equal says if it isn't or it is.1274

If I have x=abc, y=abc, x=y, you will notice that it returns "true."1282

Let's say it's not equal: it returns "false."1295

Very popular; very simple to use, too.1299

Also notice, with the x=abc, y=abc, it does return the final object, which is something in Ruby.1302

Next, we want to look at the substrings.1319

We have our value: a=educator.com.1321

If you look at this second one here...we are going to get a substring of it.1327

So we use these square brackets, and we say 0..7; this is a range object, and it's inclusive.1334

What this says is, "Starting from the first value (which is zero), get me the whole value all the way until I get to the seventh index."1357

We have our value 0 here...let me put that here...that is zero, and here is our value 7.1367

It gets from 0 to 7, and it will return "educator."1380

There is another way to do it, and this is with square brackets.1385

This one, with the square brackets, says, "Start at this index."1389

It says, "I'm going to start at index 0."1400

Again, 0 index is the e, and it says, "Give me the eight characters starting from that index."1403

We are getting our eight characters--1, 2, 3, 4, 5, 6, 7, 8--so we have "educator."1426

The last one I want to go over, a substring, is--we can actually go back to the last text to the front.1434

Here we have our a-1.1441

This will actually look at the last value of that string.1446

It starts from the last indexed value.1451

If I were to do a-2, that actually returned the o.1473

Next, we want to talk about string encoding.1489

First, with Ruby 1.8, strings are a sequence of bytes.1491

This makes it tougher to do encoding--it makes it part of a byte schema, and it follows an ASCII character set.1502

Now, in 1.9, strings are actually a true sequence of characters.1525

They also have an encoding method as part of it.1530

I can specify if I want it ISO, UTF-8, or some other encoding.1539

It's not confined to the ASCII character set.1546

That is one reason we are using Ruby 1.9.1556

The last thing we want to go over is symbols.1559

Symbols represent names and strings in the Ruby Interpreter.1564

They are stored in a table that stores names for the classes, methods, and variables.1570

This allows the Interpreter to void most string comparisons.1578

It also makes it very easy for it to display these values onto the screen, and to do a lookup without having to worry about where these objects come from.1584

For example, I have this "symbols"; a symbol is basically...this is the basic one.1600

Another way to declare it is with two dots and a double quote; two dots and a single quote; or the percentage, s, and the parentheses.1611

The basic way is the first one--this is how we would mainly use that.1626

You want to use symbols in cases where the object doesn't require to be mutable.1639

For example, if you have a string versus a symbol, you always want to go with symbols first, because it's more efficient.1648

Another way with symbols and strings--you can actually convert them back and forth.1660

So, I have this symbol here; I can call this method to_s, and that will convert it to a string.1665

Again, with a string, I can use to_sym, and it will convert that to a symbol.1675

Let's look at the RDoc for this Symbol class.1690

What we are looking at here, notice, has some description about Symbol.1701

It says it is "generated using the :name and :"string"," and you have the to_sym method.1712

Now, what is very interesting is, looking at this example here, we have our module One, class Fred.1719

And you will notice that you have this class, a symbol, :Fred, and then you have another global object, f2, that has Fred.1731

And, at the bottom, all of them actually have the same object ID.1745

Think of this versus if I were to create a string called Fred, declare that in f1, then declare a string in f2--Fred--then a string in f3.1750

They would have different object IDs, whereas the syms, they all use the same...it's very much more efficient, and a better use of the way it's stored in Ruby.1766

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.