What's the "#" for?

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

Thanks,
Richard

a = "hay guys"
puts "this is what a is: #{ a }"

prints:
this is what a is: hay guys

···

On 12/22/05, redrhodes <richstep911@gmail.com> 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

Just wondering, what language has been your main programming language
until now?

I'm always curious to know where the influx of new Ruby programmers are
coming from. I'm from a C++/C#/.Net background and while the syntax is
similar to both C++ and C# some things are definitely a bit different.

Jeff

···

--
Posted via http://www.ruby-forum.com/.

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."

···

On Dec 22, 2005, at 7:32 PM, Joe Van Dyk wrote:

On 12/22/05, redrhodes <richstep911@gmail.com> 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

Joe and Ryan, thanks for the examples and reference. I'll take a
closer looke at the pickaxe in the future.

Af for my previous programming experience: I've been a jack of all
trades for a while. But, I have the most experience in Perl, Python,
and C.

Richard