我将开发一个协作网站,其中一个功能将是实时更改的协作编辑.即,当两个或更多用户正在编辑同一个文档时,他们可以在发生时立即看到彼此的变化.我对Ruby on Rails有一些经验,所以我在考虑使用EventMachine,但是围绕Node.js的所有这些炒作,我知道考虑使用它.那么,使用Node.js而不是EventMachine的主要好处是什么?
tl; dr EventMachine和Node.js之间的主要区别是什么(除了语言)?
在python中,引用函数非常简单:
>>> def foo():
... print "foo called"
... return 1
...
>>> x = foo
>>> foo()
foo called
1
>>> x()
foo called
1
>>> x
<function foo at 0x1004ba5f0>
>>> foo
<function foo at 0x1004ba5f0>
Run Code Online (Sandbox Code Playgroud)
但是,它似乎在Ruby中有所不同,因为裸体foo实际上调用了foo:
ruby-1.9.2-p0 > def foo
ruby-1.9.2-p0 ?> print "foo called"
ruby-1.9.2-p0 ?> 1
ruby-1.9.2-p0 ?> end
=> nil
ruby-1.9.2-p0 > x = foo
foo called => 1
ruby-1.9.2-p0 > foo
foo called => 1
ruby-1.9.2-p0 > x
=> 1
Run Code Online (Sandbox Code Playgroud)
我如何实际将 …
在Ruby Programming Language第6章(第2段)中,他们指出:
许多语言区分没有关联对象的函数和在接收器对象上调用的方法.因为Ruby是纯粹面向对象的语言,所以所有方法都是真正的方法,并且至少与一个对象相关联.
然后在第6段的中间:
procs和lambdas都是函数而不是在对象上调用的方法.
我对这些陈述有点困惑.Ruby是纯粹的纯OO,因此没有与对象无关的函数(如果这是纯OO的有效定义),还是与Proc对象关联的procs/lambdas?Ruby中的函数和方法有什么区别?
任何解析和理解这一点的帮助将不胜感激.
"一切都是对象"是我学习Ruby的第一件事,但是在Peter Cooper的Beginning Ruby中:从初学者到专业人士,提到" Ruby中几乎所有东西都是对象".
你能给我一些例子的事情是不是在Ruby对象?
所以,我很好奇Ruby是一种完全面向对象的语言.我偶然发现了一个对我来说不太清楚的问题.
如果我定义一个函数如下
def foo(text)
print text
end
Run Code Online (Sandbox Code Playgroud)
我在一个类之外定义函数,这个函数如何成为一个对象?我意识到我可以打电话
foo.class
Run Code Online (Sandbox Code Playgroud)
我得到了NilClass.这是否意味着foo是NilClass的一个实例?如果是的话,当我打电话时,它究竟意味着什么
foo "hello world"
Run Code Online (Sandbox Code Playgroud)
如果foo是一个对象,当我按上述方式进行语句时,我会调用什么方法.此外,如果它是一个对象,这是否意味着我可以修改它并添加另一个方法(比如bar),我可以在其中制作以下语句:
foo.bar(some variables)
Run Code Online (Sandbox Code Playgroud)
对不起,我在这一点上有点困惑.非常感谢任何澄清!谢谢!
我在另一个晚上意外地在Ruby中做了相同的事情:
a = *1..5 # => [1, 2, 3, 4, 5]
a << a
a # => [1, 2, 3, 4, 5, [...]]
a.last # => [1, 2, 3, 4, 5, [...]]
Run Code Online (Sandbox Code Playgroud)
[...]我能用它做什么,有什么用呢?
我听说红宝石中的一切都是对象.我在一次采访中回答说变量是一个对象,面试官说不.有人知道真相吗?
考虑到Ruby中的所有东西都是一个对象,我们可以打开irb并输入类似的东西4.class并"Text".class查看一个对象是哪个类,为什么这样做if.class并且unless.class没有给出返回值?
我听说"Ruby是纯粹的OOP语言","Ruby中的所有东西都是对象".如果是这样,为什么我们有这两种情况呢?
puts并print处理它.根据OOP规则,对象的方法是应该操纵它的状态的方法.任何人都可以解释这两种情况如何符合"Ruby是纯OOP语言"这一短语吗?