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

RubyをRubyらしく書く!

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for t0w4 t0w4
July 10, 2018
59

 RubyをRubyらしく書く!

Avatar for t0w4

t0w4

July 10, 2018

Transcript

  1. ˙ΞʔϦʔϦλʔϯ def hogehoge(frag) if frag == "OK" ԿΒ͔ͷॲཧ ԿΒ͔ͷॲཧ return

    true end return false end JGจͷத਎͕ߦఔ౓ͷ಺༰Ͱ͋Ε͹ɺޙஔJGͰߦ਺Λ ݮΒ͠·͠ΐ͏ʂ मਖ਼લ def hogehoge(frag) return false if frag != "OK" ԿΒ͔ͷॲཧ ԿΒ͔ͷॲཧ return "OK!" end मਖ਼ޙ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  2. ˙ϝιουͷ໭Γ஋Λฦ࣌͢͸Ͱ͖Δ͚ͩSFUVSOΛ ࢖Θͳ͍ def hogehoge result = "OK" result += "!"

    return result end ίʔυઆ໌ɿ จࣈྻΛՃ޻͠z0,zΛฦ͢ϝιουΛఆٛ͢Δɻ मਖ਼લ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  3. ˙ϝιουͷ໭Γ஋Λฦ࣌͢͸Ͱ͖Δ͚ͩSFUVSOΛ ࢖Θͳ͍ def hogehoge result = "OK" result += "!"

    return result end ίʔυઆ໌ɿ จࣈྻΛՃ޻͠z0,zΛฦ͢ϝιουΛఆٛ͢Δɻ मਖ਼લ ここ!!! ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  4. ˙จࣈྻͷ੔ܗ ෳ਺ߦ EFGNBJM@DPOUFOUT OBNF  DPOUFOUT)FMMPaO DPOUFOUT .ZOBNFJT\OBNF^ FOE ίʔυઆ໌ɿ

    Ҿ਺ͷ஋Λݩʹʮ)FMMP.ZOBNFJTʙʙʯͷจࣈྻΛ վߦࠐΈͰฦ͢ɻ मਖ਼લ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  5. ˙จࣈྻͷ੔ܗ ෳ਺ߦ EFGNBJM@DPOUFOUT OBNF  DPOUFOUT)FMMPaO DPOUFOUT .ZOBNFJT\OBNF^ FOE ίʔυઆ໌ɿ

    Ҿ਺ͷ஋Λݩʹʮ)FMMP.ZOBNFJTʙʙʯͷจࣈྻΛ վߦࠐΈͰฦ͢ɻ मਖ਼લ ここ!!! ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  6. EFGNBJM@DPOUFOUT OBNF  d&04 )FMMP .ZOBNFJT\OBNF^ &04 FOE ෳ਺ߦͷ؆୯ͳจࣈྻ੔ܗ͸ώΞυΩϡϝϯτΛ࢖ͬͨํ͕ ݟ΍ͯ͘͢मਖ਼͠΍͍͢Ͱ͢ʂ

    मਖ਼ޙ ※~EOSͱॻ͘ͱʮHello!ʯͷલͷεϖʔεΛແࢹͯ͘͠ΕΔ ˙จࣈྻͷ੔ܗ ෳ਺ߦ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ 30/46
  7. ˙ೖྗ஋͕OJM 3VCZͷ/6-- ͷ͚࣌ͩॳظԽ EFGIPHF BSH  BSH)PHFOFXJGBSHOJM  BSH FOE

    ίʔυઆ໌ɿ Ҿ਺͕OJMͳΒ)PHFΫϥεͷΠϯελϯεΛฦ͢ɻ मਖ਼લ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  8. ˙ೖྗ஋͕OJM 3VCZͷ/6-- ͷ͚࣌ͩॳظԽ EFGIPHF BSH  BSH)PHFOFXJGBSHOJM  BSH FOE

    ίʔυઆ໌ɿ Ҿ਺͕OJMͳΒ)PHFΫϥεͷΠϯελϯεΛฦ͢ɻ मਖ਼લ ここ!!! ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  9. ˙ม਺ͷॳظԽɺฤूɺ໭Γ஋ͷηοτΛεϚʔτʹʂ EFGBMM@GJMFT GJMFT<> %JSHMPC  UYU EPcGJMFc GJMFTGJMF FOE GJMFT

    FOE ίʔυઆ໌ɿ ΧϨϯτσΟϨΫτϦʹ͋Δ֦ுࢠ͕ʮUYUʯͷϑΝΠϧ ҰཡΛ഑ྻͰฦ͢ɻ मਖ਼લ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  10. ˙ม਺ͷॳظԽɺฤूɺ໭Γ஋ͷηοτΛεϚʔτʹʂ EFGBMM@GJMFT GJMFT<> %JSHMPC  UYU EPcGJMFc GJMFTGJMF FOE GJMFT

    FOE ίʔυઆ໌ɿ ΧϨϯτσΟϨΫτϦʹ͋Δ֦ுࢠ͕ʮUYUʯͷϑΝΠϧ ҰཡΛ഑ྻͰฦ͢ɻ मਖ਼લ ここ!!! ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  11. EFGBMM@GJMFT <>UBQEPcGJMFTc %JSHMPC   EPcGJMFc GJMFTGJMF FOE FOE FOE

    ߦ਺͸मਖ਼લͱมΘΓ·ͤΜ͕ɺमਖ਼ޙ͸ॳظԽɺ मਖ਼ޙ ໭Γ஋ͷηοτΛলུͰ͖ɺͪ͜Βͷํ͕3VCZΒ͍͠ɻ ˙ม਺ͷॳظԽɺฤूɺ໭Γ஋ͷηοτΛεϚʔτʹʂ ୈ2ষ Ruby͸RubyΒ͔͘͘͠ʂ
  12. ˙ΦʔϓϯΫϥε [1] pry(main)> [2] pry(main)> class String [2] pry(main)* def

    upcase [2] pry(main)* self.downcase [2] pry(main)* end [2] pry(main)* end => :upcase [3] pry(main)> "abCD".upcase => "abcd" [4] pry(main)> 3VCZ͸ఆٛࡁΈͷΫϥεʹର͠ఆٛͷมߋɺϝιουͷ ௥Ճɺ্ॻ͖ΛͲͷΫϥεʹରͯ͠΋ߦ͑·͢ɻ ্ͷྫ͸จࣈྻΛେจࣈԽ͢ΔϝιουΛʮখจࣈԽʯ͢ Δϝιουʹॻ͖׵͍͑ͯ·͢ɻ΍͹͍ मਖ਼લ ͓·͚ɿRubyͷҋ෦෼
  13. ˙ϝιουͷಈత௥Ճ [1] pry(main)> define_method :my_method do |arg| [1] pry(main)* "#{arg}

    is method" [1] pry(main)* end => :my_method [2] pry(main)> my_method("hoge") => "hoge is method" [3] pry(main)> 3VCZʹ͸ϝιουΛ௥Ճ͢ΔͨΊͷϝιου͕͋Γɺ໊ শɾಈ࡞ͳͲΛม਺Λ࢖༻ͯ͠ಈతʹఆٛͰ͖·͢ɻ ্ͷྫ͸Ҿ਺Λड͚औΓɺzҾ਺JTNFUIPEzͱ͍͏จࣈྻ Λฦ͢ϝιουΛఆ͍ٛͯ͠·͢ɻ ͓·͚ɿRubyͷҋ෦෼
  14. ˙Ξϥ΢ϯυΤΠϦΞε [1] pry(main)> class String [1] pry(main)* alias :orig_upcase :upcase

    [1] pry(main)* def upcase [1] pry(main)* self.orig_upcase + " is upcased!" [1] pry(main)* end [1] pry(main)* end => :upcase [2] pry(main)> "hoge".upcase => "HOGE is upcased!" [3] pry(main)> Ξϥ΢ϯυΤΠϦΞεͱ͸ɺݩͷϝιου໊Λม͑ͣʹ ϝιουͷಈ͖Λ௥Ճ͠·͢ɻ ্ͷྫ͸จࣈྻΛେจࣈʹ͢ΔϝιουΛमਖ਼ͯ͠ɺ຤ ඌʹzJTVQDBTFEz͕௥Ճ͞ΕΔΑ͏ʹ͍ͯ͠·͢ɻ ͓·͚ɿRubyͷҋ෦෼