相关疑难解决方法(0)

如何理解Ruby中的符号

尽管阅读了" 理解Ruby符号 ",但在使用符号时,我仍然对内存中数据的表示感到困惑.如果一个符号(其中两个包含在不同的对象中)存在于同一个内存位置,那么它们如何包含不同的值?我原本期望相同的内存位置包含相同的值.

这是来自链接的引用:

与字符串不同,同名的符号在ruby会话期间初始化并仅存在于内存中一次

我不明白它如何设法区分同一内存位置中包含的值.

考虑这个例子:

patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }

patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
Run Code Online (Sandbox Code Playgroud)

patient1并且patient2都是哈希,这很好. :ruby然而是一个象征.如果我们要输出以下内容:

patient1.each_key {|key| puts key.to_s}
Run Code Online (Sandbox Code Playgroud)

然后将输出什么?"red",还是"programming"

忘记哈希一秒钟,我认为符号是一个指向值的指针.我的问题是:

  • 我可以为符号分配值吗?
  • 符号只是一个指向变量的指针吗?
  • 如果符号是全局的,那是否意味着符号总是指向一个东西?

ruby symbols

81
推荐指数
7
解决办法
4万
查看次数

正常变量Vs Ruby中的实例变量,有什么区别?

请考虑以下示例ruby类

class User
  def hello
    puts "hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,用于初始化.有两种方法

正常变量

1.9.3p125  > tr = User.new
 => #<User:0x98778c4>
1.9.3p125  > tr.hello
 Hello world
 => nil`
Run Code Online (Sandbox Code Playgroud)

实例变量:

1.9.3p125 > @tr = User.new
 => #<User:0x9890f2c>
1.9.3p125 > @tr.hello
Hello world
 => nil
Run Code Online (Sandbox Code Playgroud)

现在,在这两种情况下它都是一样的.那么正常变量和实例变量有什么区别?

ruby variables

13
推荐指数
1
解决办法
6682
查看次数

标签 统计

ruby ×2

symbols ×1

variables ×1