当前位置:  开发笔记 > 后端 > 正文

为什么我不能连接两个字符串并将它们分配给符号?

如何解决《为什么我不能连接两个字符串并将它们分配给符号?》经验,为你挑选了3个好方法。

...如在这个例子中:

helloworld.rb:1: syntax error, unexpected '=', expecting $end
:helloworld = "hello ".concat("world")

我想如果我使用concat我正在修改字符串"hello"并向其添加"world",然后最终将结果字符串 - "hello world" - 分配给等号左侧的:helloworld符号.我认为那是合法的,就像我写的那样:

:helloworld = "hello world"

哦,等等,这也行不通.(划痕头).



1> dstnbrkr..:

Ruby符号不能赋值给它们,因为它们代表规范值.如果要从字符串构建符号,可以使用"hello".concat("world").to_sym.


您甚至可以执行类似`:"#{"plan _"}#{:date}"`这将导致`:plan_date`或其他任何内容,具体取决于您的要求的复杂程度.
还有其他几种选择.:"hello world"是最直接的,但如果符号在运行时未知,则可以将其存储在var:foo ="hello".concat("world").to_sym中.

2> 小智..:

试试这个:

:"hello world"



3> jshen..:

来自没有像他们这样的语言的符号令人困惑.你不能分配符号,这不是他们的目的.

以下是一些可能有助于解释它的示例.

5.times do |i|
  # a new string is created in each iteration of the loop
  puts "my string".object_id

  # there is only ever one symbol for each possible value
  # so a new object is not created during each iteration
  puts :my_symbol.object_id

  # this often makes a difference when you're using them for things like hash keys
  #some_method(:name => 'bob')
  #some_method('name' => 'bob')
end

另一个很大的区别是符号比较只是一个指针比较.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有