Forum: Ruby What's the "#" for?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
redrhodes (Guest)
on 2005-12-23 02:13
(Received via mailing list)
I've started on my first ruby project and came accross the following
code from:
http://habtm.com/articles/2005/11/13/your-site-doe...

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
Joe Van D. (Guest)
on 2005-12-23 02:34
(Received via mailing list)
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
Jeff C. (Guest)
on 2005-12-23 02:43
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
J. Ryan S. (Guest)
on 2005-12-23 02:43
(Received via mailing list)
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."
redrhodes (Guest)
on 2005-12-23 04:28
(Received via mailing list)
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
This topic is locked and can not be replied to.