相关疑难解决方法(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万
查看次数

Ruby中的符号和变量有什​​么区别?

我试图理解符号和红宝石中的变量之间的区别.在给出引用对象的名称时,它们似乎完全相同.

我已经读过这些符号可用于更快的程序,但我不确定它们为什么或如何以任何方式与变量不同.

ruby variables symbols ruby-on-rails

11
推荐指数
3
解决办法
8194
查看次数

是否有在 Vagrantfiles 中引用变量的样式指南?

当我查看 Vagrant 文档https://www.vagrantup.com/docs/networking/forwarded_ports.html 时,它给出了这样的示例:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "tcp"
  config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "udp"
end
Run Code Online (Sandbox Code Playgroud)

但是,以下内容似乎也有效:

单引号

Vagrant.configure("2") do |config|
  config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "tcp"
  config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "udp"
end
Run Code Online (Sandbox Code Playgroud)

冒号前缀

Vagrant.configure("2") do |config|
  config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "tcp"
  config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "udp"
end
Run Code Online (Sandbox Code Playgroud)

这些语法有什么区别?只有当您有像 puppet这样的变量时才应该使用双引号吗?

什么是冒号前缀语法?这是令人困惑的,因为该行中的其余关键字都带有冒号后缀。

Vagranfiles 有风格指南吗?

vagrant

4
推荐指数
1
解决办法
668
查看次数

结肠的意义:在Ruby中

可能重复:
了解Ruby中的符号Ruby
中的冒号运算符是什么?

我真的觉得这很天真,但我会继续问:

:红宝石的重要性是什么?

我已经看到它被用于许多类似params[:id]或类似的地方x < :length.

ruby

3
推荐指数
1
解决办法
486
查看次数

什么是分类为Ruby的冒号?它不是运营商

在将此标记为" Ruby中的冒号操作符是什么? " 的副本之前,请先阅读问题(只是先发制人).我不是在询问冒号究竟做了什么.

我最近试图想出一个聪明的解决方案" 将字符串转换为符号/关键字 ".我的第一个想法是为String类重载冒号运算符,就像Ruby +对String上的方法一样(我知道这样做的潜在缺点).但我发现它:不仅仅是String的可重载运算符.

Google对"ruby运算符" 的第一个结果并未将冒号显示为运算符.我找不到任何声称它是运营商的消息来源.我想它会与hashrocket(=>)属于同一类别,但我不知道你会称之为什么.

那么这个特殊的冒号字符被归类为什么?你能指出它在Ruby源中的定义,它可能会被改变吗?

ruby operators

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

Ruby中以冒号为前缀的单词有什么用?

可能重复:
了解Ruby中的符号Ruby
中的冒号运算符是什么?

这是我正在阅读的Rails教程给出的一些代码.

class Post < ActiveRecord::Base
  attr_accessible :content, :name, :title

  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end
Run Code Online (Sandbox Code Playgroud)

什么:content,:name和:title是什么意思?我依旧记得这些来自我正在阅读的红宝石教程(hlrb),但是当我浏览它时我找不到它们.这些单词以冒号为前缀是什么意思?

ruby ruby-on-rails colon

0
推荐指数
1
解决办法
467
查看次数

标签 统计

ruby ×5

ruby-on-rails ×2

symbols ×2

colon ×1

operators ×1

vagrant ×1

variables ×1