Slide 1

Slide 1 text

Ruby Blocks ʹ͓͚Δ Syntax Error ͷṖΛ௥͏ 
 2019.4.16 ࣾ಺LTେձ #1 
 @tetsuya

Slide 2

Slide 2 text

໰୊

Slide 3

Slide 3 text

͜ͷίʔυ͸ಈ͘Ͱ͠ΐ͏͔ʁ 1.upto(2) {|i| p i }

Slide 4

Slide 4 text

ಈ͘ $ ruby -e '1.upto(2) {|i| p i } ' 1 2

Slide 5

Slide 5 text

͡Ό͋ͬͪ͜͸ʁ 1.upto 2 {|i| p i }

Slide 6

Slide 6 text

౴͑

Slide 7

Slide 7 text

όʔδϣϯʹΑΔ

Slide 8

Slide 8 text

Slide 9

Slide 9 text

Ruby 1.9.0-4 (ಈ͘) $ ruby -ve '1.upto 2 {|i| p i} ' ruby 1.9.0 (2008-08-26 revision 18849) [i386-darwin18.2.0 ] 1 2

Slide 10

Slide 10 text

Ruby 2.3.3 (ಈ͔ͳ͍) $ ruby -ve '1.upto 2 {|i| p i} ' ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin18 ] -e:1: syntax error, unexpected '{', expecting end-of-inpu t 1.upto 2 {|i| p i}

Slide 11

Slide 11 text

Ruby 2.4.0 (ಈ͘) $ ruby -ve '1.upto 2 {|i| p i} ' ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin18 ] 1 2

Slide 12

Slide 12 text

Ruby 2.4.1 (ಈ͘) $ ruby -ve '1.upto 2 {|i| p i} ' ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin18 ] 1 2

Slide 13

Slide 13 text

Ruby 2.4.2 (ಈ͔ͳ͍) $ ruby -ve '1.upto 2 {|i| p i} ' ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin18 ] -e:1: syntax error, unexpected '{', expecting end-of-inpu t 1.upto 2 {|i| p i}

Slide 14

Slide 14 text

ͳ͔ͥ

Slide 15

Slide 15 text

ྺ࢙ΛḪΔ͜ͱ10೥ • ΋ͱ͸1.9Ͱ࢓༷มߋͱͯ͠௥Ճ͞ΕɺΑΓ਌੾ʹϒϩοΫΛղ ऍ͢ΔΑ͏ͳ΋ͷͩͬͨ • ʮϓϩάϥϚ͸ a {|i| ...} ͸ϝιουݺͼग़͠ͱͯ͠ղऍ͢Δ͕ɺ 2 {|i| …} ͸ϝιουݺͼग़͠ͱ͸ղऍ͠ͳ͍͸ͣͩʯ • ʮϦςϥϧͰ͋Δ͔ม਺Ͱ͋Δ͔ͰৼΔ෣͍͕ҟͳΔ͜ͱ͸ɺࠞ ཚΛট͘Մೳੑ͕͋Δʯ Bug #505: 1.upto 2 {|i| p i } - Ruby trunk - Ruby Issue Tracking System

Slide 16

Slide 16 text

ٞ࿦ͷ຤ * parse.y (yylex): "1.upto 2 {|i| p i }" should be syntax error. · ruby/ruby@05edaf5

Slide 17

Slide 17 text

ͦͷޙ΋ಈ͍ͨΓಈ͔ͳ͔ͬͨΓ • Bug #13547: [].delete 1 { 'NG' } - Ruby trunk - Ruby Issue Tracking System • Bug #14023: SyntaxError on array argument and block - Ruby trunk - Ruby Issue Tracking System

Slide 18

Slide 18 text

݁࿦ • ɹɹɹɹɹɹɹɹɹ͸ Syntax error ͕ͩɺRuby ͷόʔδϣϯ ʹΑͬͯ͸ಈ͍ͯ͠·͏ 1.upto 2 {|i| p i }