[ruby-core:93533] [Ruby master Feature#15983] Can we have a similar syntax (string interpolation) the way V language has?
From:
shevegen@...
Date:
2019-07-04 07:45:40 UTC
List:
ruby-core #93533
Issue #15983 has been updated by shevegen (Robert A. Heiler).
Let's look at this purely from a syntax point of view, so that we can avoid other
issues such as backwards incompatible changes (which may be a big reason why
this request will not be implemented; but you have to ask matz).
I think you have made a good point that e. g.
$foo = 'world'
puts "hello $foo"
would be simpler to type than e. g.
puts "hello #{$foo}"
or
foo = 'world'
puts "hello #{foo}"
Martin pointed out that Perl allows for string interpolation like that,
although it still seems different to this behaviour:
areas := ['game', 'web', 'tools']
for area in areas {
println('Hello, $area developers!')
Since we do not need special access modifiers for the variable "areas",
whereas I seem to remember in perl we had to use some identifier
such as $areas or something like that; or @areas or something (it
has been literally like almost +15 years since I last wrote perl
code ...).
Having said that, I think that it is probably not easily doable to
interpolate without #{} for non-global variables, as otherwise
it might have been done yet.
Adding another syntax identifier as proposed, would, in my opinion,
not be a good idea, since the scope of the change is motivated
primarily by the possibility to avoid #{} only. #{} can be annoying,
but having to add a new character solely for this would be bad as
well, I think. Then there is also the issue of backwards compatibility,
so I think while it is an interesting idea, it is most likely not
a very realistic one. But that is just my opinion - ultimately you
have to ask matz. :)
----------------------------------------
Feature #15983: Can we have a similar syntax (string interpolation) the way V language has?
https://bugs.ruby-lang.org/issues/15983#change-79096
* Author: mechanicles (Santosh Wadghule)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Sorry, guys, This is the first feature that I am writing in this Ruby issue tracking system, and If I make any mistake, please understand :).
Today I was going through this language, i.e. V language (mainly their website) and found its basic code like below,
```ruby
fn main() {
areas := ['game', 'web', 'tools', 'science', 'systems',
'embedded', 'GUI', 'mobile']
for area in areas {
println('Hello, $area developers!')
}
}
```
I like this kind of string interpolation which looks so simple to write. If we try to write the same code in Ruby, we need to write like this,
```ruby
areas = ['game', 'web', 'science', 'system']
areas.each do |area|
puts "Hello, #{area} developers!"
end
```
Instead of using `#{area}` syntax for string interpolation, can we have something like `$area`? This might save some keystrokes.
I know that Ruby has already occupied this `$` character. But we can use another character which is not used in Ruby.
We can close this feature request if we already discussed on such topic before.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>