how about that?

(n < 1) ? "_" : (("A"[0] + n).chr)

n = 12
> M




> --- Ursprgliche Nachricht ---
> Von: Ross Bamford <rossrt / roscopeco.co.uk>
> An: ruby-talk / ruby-lang.org (ruby-talk ML)
> Betreff: Re: Indexing system - ruby newbie
> Datum: Thu, 2 Mar 2006 01:37:06 +0900
> 
> On Thu, 2006-03-02 at 00:14 +0900, Adam Groves wrote:
> > Dear Ross,
> > 
> > it works a treat but I'm having a bit of trouble figuring out what's 
> > going on.
> > 
> >  	  (n < 1) ? '_' : (1...n).inject("A") { |curr, i| curr.succ }
> > 
> > I get this:
> > if n<1
> >   '_'
> > else
> > 
> > But I'm stuck here.
> > 
> >   (1...n).inject("A") { |curr, i| curr.succ}
> > 
> > I still can't quite get my head around blocks beyond .each do |x|
> 
> Inject is real easy, and very handy. It's just like 'each', except it
> also allows the result of the previous iteration to be injected via the
> first argument. For the first iteration, you provide the initial result.
> 
> For example:
> 
> 	a = [1,2,3,4,5]
> 
> 	a.inject(0) { |sum, i| sum + i }
> 	# => 15
> 
> What happens is:
> 
> 	Block is called with sum = 0, i = 1
> 	  Block returns 1
> 	Block is called with sum = 1, i = 2
> 	  Block returns 3
> 	Block is called with sum = 3, i = 3
> 	  Block returns 6
> 	Block is called with sum = 6, i = 4
> 	  Block returns 10
> 	Block is called with sum = 10, i = 5
> 	  Block returns 15
> 	No more elements, so inject returns 15.
> 
> In Ruby, inject allows you to omit the initial value, in which case the
> first _two_ elements from the enumerable are passed to the first
> iteration, with things proceeding as above from there, so I could have
> written:
> 
> 	a.inject { |sum, i| sum + i }
> 
> And would have:
> 
> 	Block is called with sum = 1, i = 2
> 	  Block returns 3
> 	Block is called with sum = 3, i = 3
> 	  Block returns 6
> 	.
> 	.
> 	etc.
> 
> You can use inject for much more than just summing stuff up. Comes in
> very handy for these cryptic one-lines (even if you have to 'misuse' it
> a bit occasionally).
> 
> -- 
> Ross Bamford - rosco / roscopeco.REMOVE.co.uk
> 
>