Q:

Why use the :"string val" notation to declare a symbol

:"String Val" creates a symbol that stores "String Val". :"Hello Kitty".class returns Symbol. I imagine this is to create a symbol that has spaces. I can't think of any reasons why this would be useful except methods that force require symbols.
Is there any other reason to use this?

A:

Important reason for that is to utilize string interpolation, which allows symbols to be dynamically generated.
5.times.map{ |x| :"symbol_#{x}" }
=> [:symbol_0, :symbol_1, :symbol_2, :symbol_3, :symbol_4]

