Lars Christensen wrote: [] > > > @contents = FXHorizontalFrame.new(self, > > > LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0) > > > > > > Yuck! What was that 5th zero about again? > > > > Most of the constructor arguments for FOX widgets are *optional* (with > > reasonable default values). For the case you mentioned (FXHorizontalFrame), > > only the first argument (the parent container widget) is required: > > > > @contents = FXHorizontalFrame.new(self) > > > > If some future version of Ruby supports keyword arguments, the situation > > will be even better. > > Great! By why keep the arguments if you can do without them. When you use > them, the expression becomes unreadable. You still won't be able to > remember with the 5th argument was about. The only exception is the use of > named arguments (by symbol or string, which is possible with today's > ruby!): > > @button = Button.new('Click me', :border => 10); > > This is readable -- "Button.new('Click me', 10)" isn't. Is 10 the border? > the font size? It becomes a short circuit in my brain rather than a short > cut. What I don't understand here is that you seem to criticize FOX for having extra-arguments in the constructor while at the same time you recognize that there is a perfectly legitimate way of using those extra-arguments: @button = Button.new('Click me', :border => 10); It is not the fault of FOX is someone does the unreadable thing: Button.new('Click me', 10) instead of the proper way. I fail to see your point.. -- Renaud Hebert phone: (33) 01 30 77 59 92 mailto:renaud.hebert / alcatel.fr