草庐IT

ruby - 我可以在 Ruby 2.x 中要求命名参数吗?

Ruby2.0正在添加命名参数,如下所示:defsay(greeting:'hi')putsgreetingendsay#=>puts'hi'say(greeting:'howdy')#=>puts'howdy'如何在不提供默认值的情况下使用命名参数,以便它们是必需的? 最佳答案 Ruby2.0.0中没有具体的方法,但是你candoitRuby2.1.0,语法如deffoo(a:,b:)...在Ruby2.0.x中,您可以通过放置任何引发异常的表达式来强制执行它,例如:defsay(greeting:raise"greetingis

ruby - 条件子句中的赋值是好的 ruby​​ 风格吗?

为了写的更简洁,不如这样:test_value=method_call_that_might_return_nil()iftest_valuedo_something_withtest_valueend我一直在条件分配:iftest_value=method_call_that_might_return_nil()do_something_withtest_valueend这是糟糕的风格吗?更简洁的语法:do_something_withtest_valueiftest_value=method_call_that_might_return_nil()是不允许的,正如所讨论的inano

ruby - 我应该在我的 ruby​​ 脚本中定义一个 main 方法吗?

在python中,模块没有有一个main函数,但通常的做法是使用以下习惯用法:defmy_main_function():...#somecodeif__name__=="__main__":#program'sentrypointmy_main_function()我知道Ruby也没有main方法,但是有什么我应该遵循的最佳实践吗?我应该将我的方法命名为main还是什么?Wikipediapageaboutmainmethods对我没有真正的帮助。作为旁注,我还在python中看到了以下习语:defmy_main_function(args=[]):...#somecodeif__n

ruby - require File.expand_path(..., __FILE__) 是最佳实践吗?

requireFile.expand_path(...,__FILE__)是要求项目中其他文件的最佳方式吗? 最佳答案 在Ruby1.9.2中+require_relative可能是更正确的方法。出于安全原因,require已更改为不包含您的'.'目录。添加了require_relative,以便为相对于您的调用脚本路径的模块提供本地文件解决方案。您可以searchhereonStackOverflow,特别是在“Whatisrequire_relativeinRuby?”中,以及互联网和查找使用技巧以及why-formessage

ruby - Ruby 有像栈、队列、链表、映射或集合这样的容器吗?

我在网上查了几个Ruby教程,他们似乎什么都用数组。那么如何在Ruby中实现以下数据结构呢?堆栈队列链表map组 最佳答案 (从评论中移出)好吧,通过限制堆栈或队列方法(push、pop、shift、unshift),数组可以是堆栈或队列。使用push/pop提供LIFO(后进先出)行为(堆栈),而使用push/shift或unshift/pop提供FIFO行为(队列)。map是hashes,和一个Set类已经存在。您可以使用类实现链表,但数组将使用标准数组方法提供类似于链表的行为。 关

ruby-on-rails - 我们可以从 View 调用 Controller 的方法吗(理想情况下我们从 helper 调用)?

在RailsMVC中,您能否从View中调用Controller的方法(因为方法可以从助手中调用)?如果是,如何? 最佳答案 这里是答案:classMyController然后,在您看来,您可以在ERB中引用它,完全符合您对的期望。或: 关于ruby-on-rails-我们可以从View调用Controller的方法吗(理想情况下我们从helper调用)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

ruby-on-rails - Array.join ("\n") 不是用换行符加入的方式吗?

我有一个数组..[1,2,3,4]我想要一个包含所有由换行符分隔的元素的字符串..1234但是当我尝试[1,2,3,4].join("\n")我得到1\n2\n3\n4我觉得有一个明显的答案,但我找不到! 最佳答案 是的,但是如果你打印出那个字符串,它里面会有换行符:irb(main):001:0>a=(1..4).to_a=>[1,2,3,4]irb(main):002:0>a.join("\n")=>"1\n2\n3\n4"irb(main):003:0>putsa.join("\n")1234所以它似乎确实实现了你想要的(?)

ruby-on-rails - 我应该在我的 Gemfile 中指定确切的版本吗?

我注意到在ruby​​gems.org上,很多gems建议您按主要版本而不是确切版本来指定它们。例如……Thehaml-railsgem...gem"haml-rails","~>0.3.4"#"$bundleinstall"willacquirethe#latestversionbefore1.0.但是,基于Bundlerdocs在我看来,像这样确定确切的版本会更好......gem"haml-rails","0.3.4"这就是您的haml-railsgem,它的所有依赖项都不会向前移动。如果几周后您在另一台机器上checkout该项目并运行$bundleinstall,您将拥有与您

ruby - Ruby 有 mkdir -p 吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Howtocreatedirectoriesrecursivelyinruby?在Ruby中,我该怎么做:mkdir-pcool/beans这是我想出的:Dir.mkdir('cool')unlessFile.directory?('cool')cool_beans_path=File.join('cool','beans')Dir.mkdir(cool_beans_path)unlessFile.directory?(cool_beans_path)但是,难道没有更好的办法吗?我知道我能做到:system(

ruby - 我可以在 OS X v10.6.8 上升级到当前版本的 Ruby (2.2.3) 吗?

我正在查看“InstallRubyonRails·MacOSXYosemite”,在说明中它说要更新您的操作系统,但我真的不想这样做,因为我的计算机正在老化。我还找到了“HowtoupdateRubyto1.9.xonMac?”。据我所知,我没有RVM,我害怕再安装一次,以防我的系统要求仍然不够好。最终,我正在尝试更新Jekyll,但我需要先更新我的系统。我需要Ruby1.9.3或更高版本。请问“如何在Mac上将Ruby更新到1.9.x?”工作?我正在运行Ruby1.8.7(2012-02-08补丁级别358)[universal-darwin10.0]'。编辑:我最终安装了RVM。对