![]() |
1
3
这里有两件事。一个是
实例变量
,或
如果你熟悉javascript,这很像
rails将这些作为从控制器到视图共享数据的一种方式。您定义的任何实例变量都会传播到视图实例中,在那里可以使用它们。这是Rails特有的行为。
这个
当比较两个字符串时,需要做更多的工作。
把它们想象成“单子弦”。 Ruby编程语言最奇特的地方之一是它对符号的依赖程度以及符号与字符串的混淆程度,因为许多方法要么采用要么不采用,而有些方法则非常特殊。 当你在概念上习惯它们的时候,它们是非常方便的,但是它不是你在其他语言中看到的东西,比如C++、Python、JavaScript或者你有什么。 |
![]() |
2
2
|
![]() |
3
0
如果你在哪里替换
不同的是
您可以阅读更多关于实例变量的信息 here .
现在是问题的第二部分
“到底怎么办
为了向您展示我对singleton对象的含义,让我提供一个示例:
如您所见,即使我们似乎创建了两个实例,对象仍然保持不变。第一次
为了向您展示差异,让met演示相同的内容,但使用字符串:
如您所见,两个字符串都有不同的对象id(尽管包含相同的内容),这使它们成为不同的对象。 你可以阅读更多关于符号的内容 here .
你问题的最后一部分没有
“在哪里
在Ruby中,括号在调用方法时是可选的,在调用不带参数的方法时通常是不使用的这就是这里发生的事情,通过运行代码:
你先打电话给
为了总结,下面这一行将所有内容联系在一起:
说,将post的新实例分配给实例变量
最后要知道的是,Rails做了一些幕后工作,使控制器中的实例变量转移到视图中所以当你分配
|
![]() |
4
0
首先,非常重要的是, 没有“ruby on rails中的变量语法” 是的。 ruby on rails只是一个用ruby编写的框架。ruby不允许用户代码更改基本语言语法。因此,Ruby on Rails中的变量语法与Sinatra或Padrino中的变量语法完全相同,或者其他什么,它只是Ruby中的变量语法这与ECMAScript相同,ECMAScript中也没有“Express中的变量语法”或“JQuery中的变量语法”。 事实上,几乎所有语言的工作原理都是这样的:允许用户代码改变语法的语言,更不用说改变像变量这样基本的东西的语法,是主流之外的一小部分。
我必须承认,我很难理解你的意思ruby没有“文件夹”的概念,所以这完全不相关。我不明白你所说的“实例化自”是什么意思但我还是会尝试回答:
注意这是
不像
一
这是一个
红宝石遗传
就像在ecmascript、smalltalk和lisp中一样,
当您向Ruby请求对象方法的列表时,它将返回
当您要求露比在两种方法之间创建别名时,您将给它提供现有方法和别名的名称。
等等。
Ruby和ECMAScript有两个不同之处
第一个是
句法的
区别,我在上面提到过:ruby有
第二个是重要的
语义的
差别。(你只问过语法,但我相信这种差异对于有ecmascript背景的人来说很重要。)在ruby中,
等等。
而在ECMAScript中
完全相反
是真的:两个
这允许
以及
没有人
可以打电话
[注意:要使其真正工作,我还必须使属性不可枚举,否则我仍然可以通过迭代对象来发现它。]
鲁比做不到
ECMAScript有一个
全局符号注册表
,我可以存储和检索
如果你问这个问题时没有你所贴的上下文,答案是:它可以 任何一个 是局部变量 或 消息发送(在ecmascript中称为“方法调用”),带有隐式接收器,没有参数列表。从语法上讲,在ruby中不可能区分解除对局部变量的引用和使用隐式接收器和无参数列表发送消息。在ECMAScript,由于方法调用,这种歧义是不存在的。 总是 需要参数列表,即使它是空的。
为了知道它是消息还是局部变量,我们必须考虑上下文:当变量的第一个赋值是
已分析
. (注意,这一点很重要:它是在赋值为
已分析
,而不是当它是
评价的
. 例如。
在你的代码中,我们可以清楚地看到
因此相当于
|
![]() |
cluster1 · 采取独立的新行动的好处是什么? 9 月前 |
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 9 月前 |
![]() |
Fred Willmore · Rails控制器不呈现任何模板 1 年前 |
![]() |
Diogo Amaral · 实现API请求的正确方式 1 年前 |
![]() |
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
![]() |
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
Flávio · 基于另外两个生成数组 1 年前 |