请不要攻击。以下是让我思考这个问题的示例和代码。
我在轨道上研究ruby,我正处于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是键,”params“是....指针?
params指针?它是变量吗?
编辑:是否还有其他“变量”(缺少更好的术语)接受:没有除params以外的值的键?这是一种特殊类型的“容器”还是只接受:没有值的键是正常的 EDIT2:所有变量在技术上都是指针吗?如果这是真的,那么:哈希技术指针内部的键也是如此?哈哈,如果这是真的,那么params就是一个指向指针的指针,听起来是正确的。答案 0 :(得分:3)
我认为你在这里没有使用正确的术语。也许这会有所帮助:
params.is_a?(Hash) == true
。params[:id]
中:id是哈希值的关键字。答案 1 :(得分:0)
params是来自HTTP请求的变量哈希
答案 2 :(得分: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
没有值”是什么意思。
符号也可以以其他方式使用,例如,用于指代方法。一个例子是定义before_filter
:
class UsersController < ApplicationController
before_filter :init
def index
# etc
end
private
def init
# Does some stuff
end
end
before_filter
方法采用一个符号,表示在调用操作之前要运行的方法。
符号不是引用,它们是符号,并自行评估。请参阅this SO question。