Questions tagged «ruby»

有关Ruby的问题,它是结合了Perl启发的语法和类似Smalltalk的功能的动态,反射,通用的面向对象的编程语言。

4
您是否认为仅GAE就足以证明通过Ruby学习Python是合理的?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 考虑到您不必参与设置/购买服务器甚至不必购买域的事实,您是否认为仅凭这一事实就足以选择一个? 我不一定要在Google App Engine上工作,我只是觉得在托管/环境/等方面很方便。并想知道这是否是学习python的足够好理由。 无论如何,我不是想在python和ruby之间争论,而是在Google App Engine上讨论更多话题,以及它的价值是否足以决定您应该学习的语言。

4
Ruby:if变量vs if variable.nil?
我是Ruby的新手,当我发现除nil和false之外的所有对象均为真时,我感到很惊讶。偶数为0。 关于该语言的属性的一件好事是,您可以编写: if !variable # do stuff when variable is nil end 我的同事是经验丰富的Ruby开发人员,他们坚持认为我应该选择该选项,而不要使用.nil?像这样: if variable.nil? # do stuff when variable is nil end 但是,我认为后者是一个更好的选择,原因有两个:1.我认为它更面向对象,尤其是在像Ruby这样的语言中,一切都是对象和消息交换。2.我认为,即使它不那么紧凑,它也更具可读性。 我在这里犯“新手”错误吗?

3
我可以使用Ruby来自动化一切吗?
我在各种平台(Windows,Linux等)上面对每天运行的各种类型的应用程序(基于Web,基于GUI,命令行等)。我有很大的机会通过脚本来自动化任务。但是几乎每种类型的应用程序和平台都有其本机脚本语言或工具(例如Windows的VBScript和PowerShell,Linux的Bash脚本,Web应用程序的Selenium和GUI应用程序的AutoIt等)。学习和维护如此多的脚本语言使我丧命。 我觉得Ruby可以轻松地与各种平台进行互操作,并且表达能力很强。所以我的问题是: 可以使用Ruby编写所有脚本吗? 如果是的话,与每个平台的本机脚本语言相比,主要缺点是什么?

7
是否有人长期使用Python / Ruby和PHP并仍然偏爱PHP?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我通常会对捍卫PHP的文章以及所使用的论点着迷。这些类型的文章的作者经常没有提及他们对其他语言的经验。我个人很难想象有人会同时了解Python或Ruby,以及PHP,并且仍然更喜欢PHP。 因此,如果有人适合这个描述,我将很想听听为什么您更喜欢PHP而不是这两种语言。

5
如果我决定像Haskell一样编写所有Ruby,可以吗?
鉴于Ruby具有内置的良好列表操作功能-减少,映射,选择,收集等。它具有Procs,Blocks和Lambdas,并且具有良好的迭代支持(该each系列),如果我尝试这样做会是一个错误的设计决定以最纯功能的方式编写我所有的Ruby内容?尤其是对于几乎没有I / O的代码(因此不太明显的副作用)? 我一直在学习Haskell(称为“真正的”黑客语言),并且喜欢它的做事方式-我爱Ruby,但是当更多的Haskell精神融入其中时,它可能会变得更加有趣(嗯,没有露比不是一开始就从它那里学到很多东西吗?) 欢迎提供建设性的指导...


8
如何结束对.NET的依赖?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 我多年来一直在开发Windows GUI应用程序,并于2005年初跳入.NET。.NET无疑是一个了不起的平台,并且我仍在使用它,但是由于存在着各种各样的技术,我不想留下来致力于这个营地。我想学习可以用来开发GUI应用程序的新语言。 我正在学习Ruby,并且刚刚安装了Python。我读到有关WxRuby的信息,WxRuby是用于开发Windows GUI应用程序的框架。在Ruby中。我正在寻找类似的Python框架。 除此之外,我想知道哪种语言更适合生产级GUI应用程序。我怀疑Ruby的魅力在于Ruby on Rails是否更专注于Web平台。 我知道我可能不会获得那些丰富的.NET类和令人印象深刻的Visual Studio IDE,但是我仍然想走很少的路。我不想使用IronPython和IronRuby,但是稍后某个时候,我可能会尝试探索它们。
10 python  ruby 

4
重构-只要所有测试都通过,简单地重写代码是否合适?
我最近看了RailsConf 2014的“ All Little Little”。在这次演讲中,Sandi Metz重构了一个包含大型嵌套if语句的函数: def tick if @name != 'Aged Brie' && @name != 'Backstage passes to a TAFKAL80ETC concert' if @quality > 0 if @name != 'Sulfuras, Hand of Ragnaros' @quality -= 1 end end else ... end ... end 第一步是将函数分解为几个较小的函数: def tick case name when 'Aged …

1
出于设计原因,与Ruby或Smalltalk相比,Python的连接似乎不关注连接的项目,而是关注符号。
我认为OOP的基础之一是,我们有对象,这是我们有兴趣处理的项目,然后我们向它们发送消息。 因此,看起来很自然,我有一组项目,并且需要将它们放入一个字符串中,因此可以这样做: ["x", "o", "o"].join(" | ") # joining a tic-tac-toe row in Ruby (Smalltalk的操作方式与此相同)。" | "在某种程度上,它被认为是一个参数,是如何加入的一个象征。它可以是" "也一样,如果游戏板是要简单。因此,联接元素" | "并不是我们特别感兴趣的东西,也不是程序中的主要对象具有特别的重要性或意义。 如果Python使用 " | ".join(["x", "o", "o"]) 确实感觉有点奇怪,几乎感觉就像我们在向论点传递消息,以告诉论点某些事情。也许Python更具程序性?告诉连接字符串为我们执行一些职责? 是否保存实现,以便我们不必join为每个集合类定义一个?但是我们是否也可以为任何集合类编写一次(例如在Ruby中)不是真的吗? module Enumerable def my_join(joiner) self.inject {|a,b| a.to_s + joiner + b.to_s} end end (类似这样,调用to_s每个项目,依靠to_s每个类的做自己的事情,转换为字符串,然后将它们串联)。因此,我们不必为String,Hash或Set或我们拥有的任何集合类中的每一个实现。 还是Python出局不走OOP路线?它采用len("abc")和type([])替代"abc".len()或者[].type()甚至在Python3也似乎。Python是出于设计原因这样做吗?

4
非确定性资源管理是抽象的泄漏吗?
据我所知,资源管理有两种普遍形式:确定性破坏和显式破坏。前者的示例是C ++析构函数和智能指针或Perl的DESTROY子例程,而后者的示例将是Ruby的块至管理资源范例或.NET的IDispose接口。 较新的语言似乎选择后者,这可能是使用非引用计数类型的垃圾收集系统的副作用。 我的问题是:鉴于智能指针或引用计数垃圾收集系统的析构函数(几乎是同一件事)允许隐式和透明的资源销毁,它比依赖于显式的非确定性类型的抽象性泄漏少吗?符号? 我将举一个具体的例子。如果您有一个超类的三个C ++子类,则其中一个实现可能不需要任何特定的销毁。也许它以另一种方式发挥了魔力。它不需要任何特殊的销毁是无关紧要的-所有子类仍然以相同的方式使用。 另一个示例使用Ruby块。两个子类需要释放资源,因此,即使其他特定子类可能不需要它,因为它们不需要特殊的销毁,所以超类会选择在构造函数中使用块的接口。 后者是否泄漏了资源破坏的实施细节,而前者却没有? 编辑:比方说,将Ruby与Perl进行比较可能更公平,因为其中一个具有确定性的销毁能力,而另一个则没有,但是它们都被垃圾回收了。

3
我可以使用什么代替Ruby(或任何其他动态语言)中的Interfaces?
我的目标是定义类之间的合同。 我喜欢鸭子输入法,但我也想在应用程序的不同层之间定义一个接口,以清楚地定义哪些是从外部调用的方法,哪些是另一层不应使用的辅助方法。 。 例如,在Java中,我可以使用诸如get()和save()之类的方法定义Persistor接口,然后使用需要在数据库上持久保存的所有方法来定义JdbcPersistor类。也许还有另一个RestPersistor,具有其他方法可以保存在远程Restserver上。 我不是在Ruby中请求接口,只是想知道是否有一种巧妙的方法来保持这种区别。我喜欢Ruby,但是我只从事小型项目。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.