From: "J. Ryan Sobol" Date: 2005-12-23T09:40:27+09:00 Subject: Re: What's the "#" for? On Dec 22, 2005, at 7:32 PM, Joe Van Dyk wrote: > On 12/22/05, redrhodes wrote: >> I've started on my first ruby project and came accross the following >> code from: >> http://habtm.com/articles/2005/11/13/your-site-doesnt-look-too- >> good-in-x-browser >> >> Since I've managed to understand most of what's going on here, but I >> still can't find a reference on how and why to use "#". From >> following the code it looks like an escape character for a >> variable to >> be populated when enclosed within quotes. Does anyone have enough >> understanding on the syntax to help a ruby nubie? >> >> class Hash >> def to_sql >> sql = keys.sort {|a,b| a.to_s<=>b.to_s}.inject([[]]) do |arr, >> key| >> arr[0] << "#{key} = ?" >> arr << self[key] >> end >> [sql[0].join(' AND ')] + sql[1..-1] >> end >> end > > a = "hay guys" > puts "this is what a is: #{ a }" > > prints: > this is what a is: hay guys > From the Ruby.new chapter in Programming Ruby : The Pragmatic Programmer's Guide (http://whytheluckystiff.net/ruby/pickaxe/) "The second thing that Ruby does with double-quoted strings is expression interpolation. Within the string, the sequence # { expression } is replaced by the value of expression. We could use this to rewrite our previous method. def sayGoodnight(name) result = "Goodnight, #{name}" return result end When Ruby constructs this string object, it looks at the current value of name and substitutes it into the string. Arbitrarily complex expressions are allowed in the #{...} construct."