Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Let's Learn Ruby - Basic

高見龍
December 30, 2013

Let's Learn Ruby - Basic

高見龍

December 30, 2013
Tweet

More Decks by 高見龍

Other Decks in Programming

Transcript

  1. Let’s Learn Ruby Rack it’s a specification (and implementation) of

    a minimal abstract Ruby API that models HTTP. such as Sinatra, Ruby on Rails Rack http://rack.rubyforge.org/ Sinatra http://www.sinatrarb.com Ruby on Rails http://rubyonrails.org/
  2. Let’s Learn Ruby Exercise please calculate how many “characters” and

    “words” of a section of a random article with Ruby.
  3. Let’s Learn Ruby Exercise please sort a given array [1,

    3, 4, 1, 7, nil, 7], and remove nil and duplicate number.
  4. Let’s Learn Ruby Exercise please covert a given array [1,

    2, 3, 4, 5] to [1, 3, 5, 7, 9] with Array#map method.
  5. Let’s Learn Ruby class Cat def walk puts "I'm walking"

    end end ! cat = Cat.new def cat.fly puts "I can fly" end cat.fly
  6. Let’s Learn Ruby def open_my_file(file_name) File.open file_name do |f| puts

    f.read end end begin open_my_file("block_demo.r") rescue => e puts e else puts "it's working good!" ensure puts "this must be executed, no matter what" end
  7. Let’s Learn Ruby my_square = Proc.new { | x |

    x ** 2 } ! # how to call a proc puts my_square.call(10) # 100 puts my_square[10] # 100 puts my_square.(10) # 100 puts my_square === 10 # 100
  8. Let’s Learn Ruby my_lambda = lambda { | x |

    x ** 2 } ! # new style in 1.9 my_lambda = -> x { x ** 2 } ! # how to call a lambda? puts my_lambda.call(10) # 100 puts my_lambda[10] # 100 puts my_lambda.(10) # 100 puts my_lambda === 10 # 100
  9. Let’s Learn Ruby def proc_test puts "hello" my_proc = Proc.new

    { return 1 } my_proc.call puts "ruby" end def lambda_test puts "hello" my_lambda = lambda { return 1 } my_lambda.call puts "ruby" end
  10. Let’s Learn Ruby Exercise please create a Dog class and

    Cat class, which are both inherited from Animal class, and implement “walk” and “eat” methods.
  11. Let’s Learn Ruby Exercise please create a Bird class, which

    is also inherited from Animal class, but include a Fly module.
  12. Let’s Learn Ruby 1. bundle gem NEW_NAME 2. gem build

    NEW_NAME.gemspec 3. gem push NEW_NAME.gem http://guides.rubygems.org/make-your-own-gem/
  13. Let’s Learn Ruby Exercise please try to create a Gem

    spec with bundle command, modify, build and push to rubygems.org.
  14. Let’s Learn Ruby desc "mail sender" task :sendmail do puts

    "grap mailing list from database..." sleep 3 puts "mail sending..." sleep 3 puts "done!" end
  15. Let’s Learn Ruby task :goto_toliet do puts "goto toliet" end

    ! task :open_the_door => :goto_toliet do puts "open door" end
  16. Let’s Learn Ruby require “minitest/autorun" ! class TestMyBMI < MiniTest::Unit::TestCase

    def test_my_calc_bmi_is_ok assert_equal calc_bmi(175, 80), 26.12 end end ! def calc_bmi(height, weight) bmi = ( weight / (height/100.0) ** 2 ).round(2) end
  17. Let’s Learn Ruby require "minitest/autorun" describe "test my bmi calculator"

    do it "should calc the correct bmi" do calc_bmi(175, 80).must_equal 26.12 end end def calc_bmi(height, weight) bmi = ( weight / (height/100.0) ** 2 ).round(2) end
  18. ⾼高⾒見⻯⿓龍 Contacts photo by Eddie Website Blog Plurk Facebook Google

    Plus Twitter Email Mobile http://www.eddie.com.tw http://blog.eddie.com.tw http://www.plurk.com/aquarianboy http://www.facebook.com/eddiekao http://www.eddie.com.tw/+ https://twitter.com/eddiekao [email protected] +886-928-617-687