def x; yield end #this must be first!!!! #the purpose of x{...} is to prevent the enclosed code from #modifying the list of known local variables. it may be omitted #in cases where it is known that no local vars are defined. module SR def SelfReferencing #old name alias end def SelfReferencing #old name alias end def SelfReferencing#old name alias end def SelfReferencing;end#old name alias end p <baz bar %(1) } def foo1 p (1..10).method(:each) #implicit parens around the whole thing end def foo2() p((1..10).method(:each)) #explicitly parenthesized... no implicit parens needed end def foo3() p (1..10).method(:each) #implicit parens around the whole thing end p proc{| a,b,(c,d,),e| p a %(1) p b %(2) p c %(3) p d %(4) p e %(5) [ a,b,c,d,e]}.call(1,2,[3,4],5) def ggg(x=nil) p x;9 end (ggg / 1) module Y19 #limit lvar scope a,b,c,(d,e)=1,2,3,[4,5] p a %(4) p c %(4) p d %(4) p e %(4) a=[1,2,3,4,5] def self.g(x=nil); 3 end def a.g=(x) p x end g = 5 self.g = 55 class<2) p(p >2) p(p> 2) p(p > 2) end module M34 p(p~6) p(p ~6) p(p~ 6) p(p ~ 6) p(p*[1]) p(p *[1]) p(p* [1]) p(p * [1]) p(p&proc{}) p(p &proc{}) p(p& proc{}) p(p & proc{}) p(p !1) p(p ?1) p(p ! 1) p(p ? 1 : 6) p(p@a) p(p @a) # p(p@ a) #wont # p(p @ a) #work p(p#a ) p(p #a ) p(p# a ) p(p # a ) p(p$a) p(p $a) # p(p$ a) #wont # p(p $ a) #work p(p%Q{:foo}) p(p %Q{:foo}) p(p% Q{:foo}) p(p % Q{:foo}) p(p^6) p(p ^6) p(p^ 6) p(p ^ 6) p(p&7) p(p &proc{7}) p(p& 7) p(p & 7) p(p(2)) p(p (2)) p(p( 2)) p(p ( 2)) p(p(p)) p(p()) p(p (p)) p(p ()) p(p ( p)) p(p ( )) p(p( p)) p(p( )) p(p) p((p)) p(p ) p((p )) p((p p)) p((p p,p)) p((p p)) p((p p,p)) p(p-0) p(p -1) p(p- 0) p(p - 0) p(p+9) p(p +9) p(p+ 9) p(p + 9) p(p[1]) p(p [1]) p(p[ 1]) p(p [ 1]) p(p{1}) p(p {1}) p(p{ 1}) p(p { 1}) p(p/1) p(p /22/) p(p/ 1) p(p / 22) p(p._) p(p ._) p(p. _) p(p . _) p(p:f) p(p :f) p(false ? p: f) p(false ? p : f) p((p;1)) p((p ;1)) p((p; 1)) p((p ; 1)) p(p<1) p(p <1) p(p< 1) p(p < 1) p(p<<1) p(p <<1) foobar 1 p(p<< 1) p(p << 1) p(p'j') p(p 'j') p(p' j') p(p ' j') p(p"k") p(p "k") p(p" k") p(p " k") p(p|4) p(p |4) p(p| 4) p(p | 4) p(p>2) p(p >2) p(p> 2) p(p > 2) end x{ def bob(x) x end p(bob %(22)) for bob in [100] do p(bob %(22)) end p(bob %(22)) } x{ def %(n) to_s+"%#{n}" end def bill(x) x end p(bill %(22)) begin sdjkfsjkdfsd; rescue Object => bill; p(bill %(22)) end p(bill %(22)) undef % } class Fixnum public :` def `(s) print "bq: #{s}\n" end end 69.`('what a world') 79::`('what a word') x{ a=5 p p +5 p a +5 } class Foou public def [] x=-100,&y; p x; 100 end end p Foou.new.[] <<9 #value foobar 9 x{ a0=9 p Foou.new.[]a0 #value p Foou.new.[] a0 #value } x{ a=b=c=0 a ? b:c a ?b:c p(a ? b:c) p(a ?b:c) } x{ h={} h.default=:foo p def h.default= v; p @v=v;v end p def (h).default= v; p @v=v;v end p def (h="foobar").default= v; p @v=v;v end p h p h.default=:b } x do x, (*y) = [:x, :y, :z] p x p y x, *y = [:x, :y, :z] p x p y x, * = [:x, :y, :z] p x end class Foop def Foop.bar a,b p a,b end end Foop.bar 1,2 Foop::bar 3,4 class Foop def Foop::baz a,b p :baz,a,b end end Foop.baz 5,6 Foop::baz 7,8 x{ without_creating=widgetname=nil if without_creating && !widgetname #foo fail ArgumentError, "if set 'without_creating' to true, need to define 'widgetname'" end } x{ #class, module, and def should temporarily hide local variables def mopsdfjskdf arg; arg*2 end mopsdfjskdf=5 class C p mopsdfjskdf %(3) #calls method end module M p mopsdfjskdf %(4) #calls method end def d p mopsdfjskdf %(5) #calls method end p d p mopsdfjskdf %(6) #reads variable p proc{mopsdfjskdf %(7)}[] #reads variable } #multiple assignment test x { a,b,c,d,e,f,g,h,i,j,k=1,2,3,4,5,6,7,8,9,10,11 p(b %(c)) p(a %(c)) p(k %(c)) p(p %(c)) } =begin not supported yet p "#{<(foo=100)} p( foo %(5)) } def foo(a=<