What's the "#" for?


#1

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


#2

On 12/22/05, redrhodes removed_email_address@domain.invalid wrote:

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


#3

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


#4

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


#5

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

be populated when enclosed within quotes. Does anyone have enough
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."