From: Gavin Sinclair Date: 2003-07-20T03:16:02+09:00 Subject: Re: [Patch] FTP.new with block On Sunday, July 20, 2003, 4:11:32 AM, Dave wrote: > Yukihiro Matsumoto wrote: >> But "open" returns the last value evaluated in the block, for >> convenience, whereas "new", as I believe, should always return a new >> instance. For me, this is more important than your reason. > Perhaps this time you should invoke the principle of least confusion... > (although I can see the argument both ways) > If you allowed passing a block to .new, then it would be meaningless to > return a file object, so your choices would be either nil or the block > value. If you made it the block value, then folks wouldn't have to > remember the difference between open and new. > There are many other methods whose return value varies if a block is > given, so there are precedents. My suggestion is: - disallow block for File.new (i.e. no change) - enforce block for File.open (because open implies close) X.new should always return "instance of X". There's no need to force File.new and File.open to mean the same thing. I realise the "open implies close" logic is pretty dodgy, but it's such a nifty language feature. Gavin