RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else...

42
RUBY BY EXAMPLE

Transcript of RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else...

Page 1: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

RUBYBY EXAMPLE

Page 2: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

Ruby is...interpretedobject orienteddynamic

Page 3: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

Ruby is...productiveintuitivepopular

Page 4: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

VARIABLES & TYPES

Page 5: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

Before we begin...a.+(b)a.is_valid?a.decrement!

Page 6: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

$counter@@counter@countercounter

GlobalClassInstanceLocal

Page 7: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

‘hello’‘’‘hello’’’%q{hello}

StringHerestringPerl-inspired

Page 8: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

a = ‘James’b = “Hello #{a}”puts b

=> “Hello James”

Page 9: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

:hello Symbol

Page 10: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

puts <<DOC This is a "heredoc" Multi-line StringDOC

Page 11: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

[1,2,3]{:a=>1, :b=>2}{a: 1, b: 2}0..10

ArrayHash (1.8)Hash (1.9)Ranges

Page 12: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

METHODS

Page 13: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

def greet(name) “Hello, #{name}”end

greet “James”

Page 14: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

def greet(name=“World”) “Hello, #{name}”end

greet “James”greet

Page 15: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

CONTROL FLOW

Page 16: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

if rating >= 4 puts "great"elsif rating == 3 puts "alright"else puts "sucks"end

Page 17: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

unless rating == 5 puts “Try harder”end

Page 18: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

puts “Try harder” unless rating == 5

puts “Seriously” if rating == 1

Page 19: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks"end

Page 20: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

while !le.has_more_lines? puts !le.next_lineend

puts !le.next_line while !le.has_more_lines?

Page 21: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

until !le.end_of_!le? puts !le.next_lineend

puts !le.next_line until !le.end_of_!le?

Page 22: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

for i in 0...!le.line_count puts !le.lines[i]end

Page 23: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

BLOCKS

Page 24: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

[1,2,3,4].each do |i| puts iend

Page 25: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

array.each(&block)

Page 26: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

printer = Proc.new do |i| puts iend

[1,2,3,4].each &printer

Page 27: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

printer = lambda { |i| puts i }

Page 28: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

def loggerWrapper puts "Executing Method" yield puts "Done Executing"end

loggerWrapper { puts "Weeee!" }

Page 29: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

COLLECTIONS

Page 30: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

Array/Enumerable Operations109 HashOperations50

Page 31: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

[1,2,3,4,5].map { |i| i +1}[1,2,3,4,5].reduce { |i, j| i + j }

({a: '1'}).merge({b: '2'})

Page 32: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

CLASSES

Page 33: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

class Person def initialize(name, age) @name,@age = name,age endend

person = Person.new("James", 32)

Page 34: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

class Person attr_accessor :name attr_accessor :age ...end

p = Person.new("James", 32)puts p.name, p.age

Page 35: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

class Person ... end

class Hero < Person attr_accessor :powersend

p = Hero.new("James", 32)p.powers = [“Flying”]

Page 36: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

MODULES & MIXINS

Page 37: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

module StrUtils def self.salt(pass, slt)

“#{pass}#{salt}” end def salt(slt)

StrUtils::salt(@value, slt) endend

Page 38: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

StrUtils::salt("123", "456")

Page 39: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

class Password include Utils def initialize(value) @value = value endend

Password.new("test").salt

Page 40: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

TOOLS OF THE TRADE

Page 41: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

irb Interactive shellruby Ruby interpretergem Library managerrake Build toolrails Web framework

Page 42: RUBY - Yo Briefca · 2020-02-14 · case rating when 4..5 puts "great" when 3 puts "alright" else puts "sucks" end

RUBYBY EXAMPLE