相关疑难解决方法(0)

Ruby中的冒号运算符是什么?

当我说{ :bla => 1, :bloop => 2 },究竟是:做什么的?我在某处读到了它与字符串的相似之处,但不知何故是一个符号.

我对这个概念不是很清楚,有人可以启发我吗?

ruby symbols

225
推荐指数
5
解决办法
9万
查看次数

如何理解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 on Rails和Colons的东西

我曾经更像是一个业余爱好的Java人,现在尝试切换到Ruby on Rails.但是我有一些困难,信不信由你,我喜欢大括号和分号......给一些方向.

但问题是:现在我正在参加RoR的在线课程,它发生在我身上,我对如何使用符号,哈希等问题总是错误的.

示例1:让我们看一下这一行代码,例如:

form_for(:session, :html => {class: "form-horizontal", role: "form"}, url: login_path)  
Run Code Online (Sandbox Code Playgroud)

这就是我读它的方式:

方法/函数名称是

form_for  
Run Code Online (Sandbox Code Playgroud)

解析为此方法的参数是:

:session, :html => {class: "form-horizontal", role: "form"}, url: login_path 
Run Code Online (Sandbox Code Playgroud)

让我们把它分解成

:session 

:html => {class: "form-horizontal", role: "form"} 

url: login_path 
Run Code Online (Sandbox Code Playgroud)

我该怎么知道如何申报这些参数?为什么:session和:html passend作为键和url而不是?:html符号是Hashmap符号吗?

  1. 例:

在模型文件中,您声明这样的n:m关系(例如用户< - >股票)

  has_many :users, through: :user_stocks
Run Code Online (Sandbox Code Playgroud)

好吧,我得到的第一个参数是:用户和第二个是相同的

:through => :user_stocks
Run Code Online (Sandbox Code Playgroud)

正确?

但是以同样的方式,让我们看看同一个项目中的routes.rb配置:

  resources :user_stocks, except: [:show, :edit, :update]
Run Code Online (Sandbox Code Playgroud)

现在我们在except hash上使用一组键,对吗?在写一个问题时它确实更清楚但是,是否有关于何时使用的经验法则

:name

name: value

:name => {values}? 

name: [values]
Run Code Online (Sandbox Code Playgroud)

或者这仅仅是个人偏好?在这种情况下,我希望我的在线教师保持一致..

一般来说,我对参数语法约定是如何以及何时使用什么(什么类型的参数)感到困惑.是因为我是从Ruby开始还是我错过了一些约定.

我希望我的问题是可以理解的,并原谅我的英语 - 非母语人士.我真的很想和RoR相处,但是现在看在线课程有时让我比以前更加困惑,因为如果我自己完成它,我会用完全不同的方式.

ruby ruby-on-rails

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

标签 统计

ruby ×3

symbols ×2

ruby-on-rails ×1