0

请不要攻击。这是让我想到这一点的示例和代码。

我正在研究 ruby​​ on rails 并且在 MVC 和 params[] 运算符中。并且一直在放下一些证明之类的东西,提醒我的笔记本专用于导轨的内封面,反正

"So we don't just want to call tweet #1. Tweet.find(1) isn't enough."
===> we need Tweet.find(params[:id])

params[:id] aka params = { :id => 1 }

所以我给自己贴上了不同的标签,从哈希开始。“1 是值,:id 是键,“参数”是....指针?

参数是指针吗?它是一个变量吗?

编辑:是否有任何其他“变量”(因为缺乏更好的术语)接受 :keys 没有参数以外的值?这是一种特殊类型的“容器”还是只接受没有值的键是正常的 EDIT2:所有变量在技术上都是指针吗?如果这是真的,那么哈希中的 :keys 在技术上也是指针吗?哈哈,如果这是真的 params 是一个指向指针的指针,听起来很对。

4

3 回答 3

3

我认为您在这里使用的术语不正确。也许这会有所帮助:

  • params标记是一个变量名,它包含对某个对象的引用。
  • 从技术上讲,params是一种返回对 Hash 对象的引用的方法。
  • 在实践中,您将 params 视为哈希,因为params.is_a?(Hash) == true.
  • :id 标记是一个 Symbol 对象。
  • params[:id]:id 中是哈希值的键。

恕我直言,将 Ruby 中的对象视为指针通常是没有用的——除非您出于某种原因故意以这种方式使用它们。但是,是的,在底层有很多间接层,它们在运行时将 C 指针转换为 Ruby 对象。

于 2012-06-08T01:15:40.797 回答
0

params 是来自 HTTP 请求的变量的哈希值

于 2012-06-08T00:53:53.557 回答
0

params是一种返回对哈希的引用的方法。

(但通常它被称为“params哈希”,而不是“params[]运算符”。)

哈希可以使用符号以及其他数据类型作为哈希键:

[1] pry(main)> h = Hash.new
=> {}
[2] pry(main)> h[:foo] = 42
=> 42
[3] pry(main)> h[42] = :foo
=> :foo
[4] pry(main)> h
=> {:foo=>42, 42=>:foo}
[5] pry(main)> h[h[:foo]]
=> :foo

我不确定您所说的“接受:keys没有价值”是什么意思。

符号也可以以其他方式使用,例如,指代一种方法。一个例子是定义 a 时before_filter

class UsersController < ApplicationController

  before_filter :init

  def index
    # etc
  end

  private

    def init
      # Does some stuff
    end
end

before_filter方法采用一个符号,指示在调用操作之前要运行的方法。

符号不是引用,它们是符号,并且对自己进行评估。请参阅这个 SO 问题

于 2012-06-08T01:13:20.373 回答