Questions tagged «ruby»

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

10
为什么将Python用于高性能/科学计算(而不是Ruby)?
PyCon 2011演讲中有一段话说: 至少在我们的商店(阿贡国家实验室)中,我们有三种公认的科学计算语言。按照这种顺序,它们是C / C ++,所有方言的Fortran和Python。您会注意到绝对,完全缺少Ruby,Perl,Java。 它是在更通用的高性能计算环境中。报价仅来自一家商店,但另一个有关HPC语言的问题也将Python列为要学习的语言(而不是Ruby)。 现在,我可以理解在该问题空间中正在使用C / C ++和Fortran(而未使用Perl / Java )。但是令我惊讶的是,鉴于HPC在Python和Ruby中的使用非常相似,因此它们之间会有很大的不同。(注意-我是Python的粉丝,但对 Ruby 没有任何帮助)。 有没有一些具体的为什么一种语言起飞的原因吗?关于可用的库吗?一些特定的语言功能?社区?还是仅仅是历史上的偶然性,它本来可以反过来?

5
获得加权随机项目
我有这个桌子 + ----------------- + | 水果 重量 + ----------------- + | 苹果| 4 | | 橙色| 2 | | 柠檬| 1 | + ----------------- + 我需要归还随机水果。但是苹果的采摘频率应该是柠檬的 4倍和橙子的 2倍。 在更一般的情况下,它应该f(weight)经常出现。 什么是实现此行为的良好通用算法? 也许在Ruby上有一些现成的宝石?:) PS 我已经在Ruby https://github.com/fl00r/pickup中实现了当前算法
51 algorithms  ruby  math  random 

9
关于“告诉,不要问”如何被认为是好的面向对象的解释
这篇博文已在Hacker News上发表,并有几篇推荐。来自C ++的大多数示例似乎与我所教的内容背道而驰。 例如示例2: 坏: def check_for_overheating(system_monitor) if system_monitor.temperature > 100 system_monitor.sound_alarms end end 与好: system_monitor.check_for_overheating class SystemMonitor def check_for_overheating if temperature > 100 sound_alarms end end end C ++中的建议是,您应该更喜欢自由函数而不是成员函数,因为它们会增加封装性。两者在语义上是相同的,那么为什么更喜欢可以访问更多状态的选择呢? 范例4: 坏: def street_name(user) if user.address user.address.street_name else 'No street name on file' end end 与好: def street_name(user) user.address.street_name end …

3
Ruby中的符号是什么?
我是Ruby世界的新手,我对符号的概念有些困惑。符号和变量有什​​么区别?为什么不仅仅使用变量? 谢谢。
45 ruby 

2
现代语言是否仍使用解析器生成器?
我是研究关于gcc编译器套件在维基百科这里,当这想出了: GCC开始使用由Bison生成的LALR解析器,但后来逐渐切换为手写递归下降解析器。2004年用于C ++,2006年用于C和Objective-C。目前,所有前端都使用手写递归下降解析器 因此,在最后一句话中,(以及我所信任的维基百科),我可以肯定地说:“ C(gcc),C ++(g ++),Objective-C,Objective-C ++,Fortran(gfortran),Java(gcj), Ada(GNAT),Go(gccgo),Pascal(gpc),... Mercury,Modula-2,Modula-3,PL / I,D(gdc)和VHDL(ghdl)”都是前端,不再使用解析器生成器。也就是说,它们都使用手写的解析器。 我的问题是,这种做法无处不在吗?具体来说,我在[Python,Swift,Ruby,Java,Scala,ML,Haskell]中寻找x的“ x的标准/官方实现是否具有手写的解析器”的确切答案?(实际上,这里也欢迎提供其他语言的信息。)我敢肯定,经过大量的挖掘,我可以自己找到它。但是,我也相信社区很容易对此负责。谢谢!

11
是否可以在不遵循最佳实践的开源项目上进行编码样式更改?
最近,我在GitHub上遇到了许多开源Ruby(或大多数是Ruby)项目,当使用诸如Rubocop之类的代码分析工具进行检查时,会造成很多冒犯。 现在,大多数此类违法行为包括使用双引号而不是单引号(未插值时),不遵循每级2个空格规则,超过80个字符的行长规则或对多行块使用{和}。 [The Ruby风格指南]推荐了最佳实践,以便现实世界中的Ruby程序员可以编写可由其他现实世界中的Ruby程序员维护的代码。〜资料来源:Ruby样式指南 尽管它们很小且易于修复,但是否适合通过修正违规并提出“拉取请求”来更改开源项目的编码风格?我承认,某些项目(例如Rails)不接受外观更改,而有些项目太大而无法一次“修复”(例如,在运行Rubocop时,Rails会产生80,000多个违规行为-不管它们有自己的一小套编码)贡献时应遵循的惯例)。毕竟,《Ruby样式指南》与诸如Rubocop之类的工具一起存在是有原因的。 人们喜欢一致性,因此对Ruby社区来说,进行此类更改通常是一件好事,对吧? [Ruby样式指南的作者]并非一无所有地提出了所有规则-它们主要是基于我作为专业软件工程师的广泛职业,以及来自Ruby社区成员和各种人的反馈和建议。高度评价的Ruby编程资源,例如“ Programming Ruby 1.9”和“ The Ruby Programming Language”。〜资料来源:Ruby样式指南 难道不是遵循社区编码风格的惯例和最佳实践基本上是在鼓励不良实践吗?

3
集成测试是否要重复所有单元测试?
假设我有一个函数(用Ruby编写,但每个人都应该理解): def am_I_old_enough?(name = 'filip') person = Person::API.new(name) if person.male? return person.age > 21 else return person.age > 18 end end 在单元测试中,我将创建四个测试以涵盖所有场景。每个Person::API对象都将使用带有stubbed方法male?和的模拟对象age。 现在谈到编写集成测试。我认为不应再嘲笑Person :: API。因此,我将创建完全相同的四个测试用例,但不模拟Person :: API对象。那是对的吗? 如果是,那么编写单元测试的意义何在?如果我可以编写使我更有信心的集成测试(因为我在处理真实对象,而不是存根或模拟对象)?

4
Python“唯一的方法”的具体示例maxim [关闭]
我正在学习Python,并对PEP 20 The Zen of Python中的以下几点感兴趣: 应该有一种-最好只有一种-显而易见的方法。尽管除非您是荷兰人,否则一开始这种方式可能并不明显。 谁能提供这个格言的具体例子?我对与其他语言(例如Ruby)的对比特别感兴趣。Ruby设计哲学的一部分(我认为起源于Perl?)是实现它的多种方法。任何人都可以提供一些示例来说明每种方法的利弊。请注意,我不是在寻找哪个更好的答案(这可能是主观的,无法回答),而是两种风格的公正对比。

8
我的简历上没有Ruby,但没有Rails [关闭]
我将Ruby列为一项技能,因为我在博士学位期间从事Ruby编程已有5年了。论文。我主要使用它来实现自然语言处理算法。 我开始寻找工作,并且将自己的履历表发布到了一些网站上(作为申请某些目标工作的一项额外奖励)。现在,我收到招聘人员的电话,向我提供Ruby on Rails的工作。问题是我从未学过Rails。这与我为博士学位所做的工作从来没有关系。 您如何建议处理这种情况以避免浪费我的时间和他们的时间?(在完成论文之前,学习Rails可能不是一种选择。)是否可以调整我的履历以使其更清楚?是否应该调整?我应该在电话上客气地告诉他们我不认识Rails吗? 顺便说一句,我简历的相关部分只是说: 技能专长: 编程语言: C,C ++,Java,Scala,Ruby,LaTeX 数据库: MySQL,XML,XPath 并列出了其他一些可能无法与Rails开发人员混淆的技能领域。

3
WebStorm包含哪些功能,而RubyMine不包含?
我正在购买Rubymine,因为我正在做少量的红宝石,但是却做大量的html5 / javascript。 我准备使用Webstorm,因为我确实有很多基于html5 / js的框架/应用程序正在工作,但是随后我读到WebStorm / PhpStorm / Rubymine等都基于其IDEA框架,并且看起来像每个框架都包含WebStorm的功能,除了一些不是立即可用但可以通过插件添加的功能。 我对WebStorm感兴趣的主要功能是: 来自IDE的JS单元测试 UI中的JS皮棉/提示覆盖率 DOM / JS重构/智能感知 Coffeescript支持 SVN / Git集成 FTP和远程同步(尽管不如其他重要) 因此,鉴于以上所述,Rubymine也会提供上述功能吗?我宁愿拥有1个可以同时使用的IDE,也不愿拥有2个具有很多重叠功能的IDE。 是否只有Webstorm内有任何特定功能,而其他任何IDE中都没有?
27 javascript  ide  ruby 

8
Ruby on Rails的缺点和警告[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 这不是RoR打击的开端-老实! 我正在学习Ruby和Rails框架。从表面上看,它看上去很酷,与PHP相比,它是一种很棒的体验。(实际上,这让我想起了使用C#和.NET的美好时光。) 但是,进入这个过程,我对这种框架或语言没有任何经验,而且我很好奇-开始时希望知道哪些当前的缺点或事情? (也许这应该做成社区Wiki?)

8
Ruby还是Python?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 这个问题是非常主观和开放的。甚至听起来我应该自己研究并做出自己的决定。但是我想把它放在那里,并从别人那里得到一些想法。 长话短说-我对老鼠赛跑感到精疲力尽,今年参加了自费休假。这主要是为了摆脱公司的磨练和四处旅行,但是我也想尝试新技术并做一些自学项目,以跟上编程的速度,而且-我只是喜欢与他人打交道。编程,没有压力! 事情是这样的:我是一生的C / C ++ / Java程序员。自从我在整个编程生涯中一直使用这种语言家族以来,我有点bracket不休。因此,我想学习与该组在语法上没有紧密联系的语言。我基本上想寻找的是一种相对通用的语言,易于学习,具有一些不同于C ++ / Java的新概念,并且拥有一个良好的社区。第二个考虑因素是它具有良好的Web开发框架。第三,要考虑的是它并不完全是学术性的(请阅读:使用它在现实世界中有很多工作)。 我将其范围缩小到了Ruby或Python。我对Ruby的印象是它非常面向Web,它的唯一真正应用是作为服务器端脚本语言来做Web东西(主要是Ruby on Rails)。我对Python几乎没有任何印象,只是它似乎具有热情的支持者,并且似乎是一种相当通用的语言。 TL; DR并尽可能简洁地说:对于C ++ / Java的人来说,学习哪种新的编程观点会更好?哪个更开放,更通用并适用于更广泛的应用程序?目前,我倾向于Ruby,但在某种程度上来说,我担心它似乎只不过是服务器端网络语言而已。
24 learning  python  ruby 

3
为什么这么多语言将以0开头的数字视为八进制?
我读过八进制在哪里有用?八进制似乎曾经是有用的。 许多语言将以0开头的数字视为八进制,因此文字010实际上是8。其中一些是JavaScript,Python(2.7)和Ruby。 但是我真的不明白为什么这些语言需要八进制,尤其是当这种符号更可能的用法是表示带有多余0的十进制数字时。 JavaScript是一种客户端语言,八进制似乎毫无用处。从其他意义上讲,这三个都相当现代,我认为不会有太多使用八进制表示法的代码通过删除此“功能”而被破坏。 因此,我的问题是: 这些语言是否支持八进制文字? 如果八进制文字是必需的,为什么不使用类似0o10?为什么要复制覆盖更有用用例的旧符号?

5
如何避免巨型胶水方法?
在我目前的工作中,我曾几次被要求清理旧代码。通常,代码是迷宫式的,其背后的数据甚至更复杂。我发现自己将事情整理成漂亮,整洁的模块化方法。每种方法都做一件事并且做得很好。那时候事情开始往南走... 最终,我总是得到一个干净的API,并且没有真正的方法将它们捆绑在一起。解决方法是编写一个大的丑陋的“粘合”方法(通常充满条件语句),该方法最终调用我所有的“清洁”方法。 胶水方法通常最终是我试图清除的代码/数据缠结的简洁版本。它通常更具可读性,但仍然很烦人。 如何避免这种方法?这是数据纠结的征兆还是我做错事情的反映?

2
使用LGPL gem如何影响我的MIT许可应用程序?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 我正在根据MIT许可开发一个开源的ruby应用程序。我之所以使用此许可证,是因为我不想对应用程序的用户施加任何限制。我也可以阅读并理解此许可证。 我最近开始在项目中使用另一个红宝石宝石(需要“ somegem”)。该红宝石宝石已获得LGPL许可。 因为我正在使用LGPL许可的另一颗红宝石宝石,我是否需要对项目进行任何更改?我的项目不包含其他gem的源代码,并且不随我的项目一起提供。它只是作为依赖项列出,以便ruby gems可以安装它,而我的项目将从我的代码中调用它。 另外,知道是否需要“当心”许可证会很有帮助,因为使用许可证会影响我的项目的许可证。 关于此主题还有其他文章,但用不同的方式表达。由于我发现此许可证有些棘手,因此我希望得到针对我的情况的答案。 谢谢你, Corsen

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.