为什么Ruby比Python更适合Rails?

问题:

Python和Ruby通常被认为是具有相似表现力和力量的亲密表亲(尽管具有完全不同的历史行李)。但有些人认为,Rails框架的巨大成功与其建立的语言有很大的关系:Ruby本身。那么为什么Ruby比Python更适合这样的框架?

回答:

可能有两个主要的区别:

Ruby具有优雅,匿名的关闭。

Rails使用它们效果很好。这里有一个例子:

class WeblogController < ActionController::Base
  def index
    @posts = Post.find :all
    respond_to do |format|
      format.html
      format.xml { render :xml => @posts.to_xml }
      format.rss { render :action => "feed.rxml" }
    end
  end
end

匿名闭包/羔羊使得更容易模拟将采取块的新语言功能。在Python中,存在闭包,但是它们必须被命名才能被使用。因此,您不必使用闭包来模拟新的语言功能,因此您不得不明确表示您正在使用闭包。

Ruby具有更清洁,更易于使用的元编程。

这在Rails中广泛使用,主要是因为它使用起来很简单。具体来说,在Ruby中,可以在类的上下文中执行任意代码。以下代码段是等价的:

class Foo
def self.make_hello_method
class_eval do
def hello
puts “HELLO”
end
end
end
end

class Bar < Foo # snippet 1 make_hello_method end class Bar < Foo; end # snippet 2 Bar.make_hello_method [/code] 在这两种情况下,您可以执行以下操作: [code lang="python"] Bar.new.hello [/code] 这将打印“HELLO”。 class_eval方法也需要一个String,所以有可能创建一个类,正在创建一个类,它们根据传入的参数有不同的语义。
事实上,它可以在Python(和其他语言)中进行这样的元编程,但Ruby有一条腿,因为元编程不是一种特殊的编程风格。它来自于在Ruby中的事实,一切都是一个对象,并且所有行代码都被直接执行。因此,Class es本身就是对象,类体有一个self指向Class,你可以在创建一个类时调用类的方法。
这在很大程度上负责Rails可能的声明程度,以及我们能够实现新的声明性功能(如关键字或新的块语言功能)的轻松性。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why is Ruby more suitable for Rails than Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + 2 =