草庐IT

JavaScript:克隆一个函数

全部标签

ruby - 重写简单的 ruby​​ 函数以使用 block

我不知道正确的术语。我试图用谷歌搜索它,但由于这个原因找不到任何东西。我正在编写一个Ruby库,我想重写这些函数,以便它们像下面那样工作,因为我更喜欢它的可读性(在一个block内?)我有一个函数可以做到这一点@dwg=Dwg.new("test.dwg")@dwg.line([0,0,0],[1,1,0])@dwg.save我想重写它,让它像这样工作Dwg.new("test.dwg")doline([0,0,0],[1,1,0])saveend你能概述一下我处理这件事的方法吗? 最佳答案 您可以定义Dwg的初始化程序来获取一个b

ruby-on-rails - 给定一个 json 对象,如何在 rails 中遍历该对象

我的应用程序正在将以下json对象发布到Rails。[{\"completed\":false,\"id\":196,\"position\":0,\"title\":\"Item1\",\"updated_at\":\"2011-08-03T21:17:09Z\"},{\"completed\":false,\"id\":193,\"position\":1,\"title\":\"ItemX\",\"updated_at\":\"2011-08-03T21:16:19Z\"},{\"completed\":false,\"id\":197,\"position\":2,\"titl

ruby - 每次请求都会启动一个新的 sinatra 实例吗?

当一个新的http请求进来时,是否会启动一个新的sinatra实例,例如是否要初始化sinatra,或者只是调用sinatra的前一个实例(相应的get/post方法/路由)的方法?感谢您提供任何文档链接,我找不到任何文档链接。如果该行为依赖于部署类型——WEBrick/Passenger等,那也很有趣 最佳答案 为每个请求创建一个新类。然而,这不是Rack完成的。这是Sinatra的一个特性。如果您想深入了解细节:该实例实际上不是使用Sinatra::Application.new创建的,而是使用Sinatra::Applicat

ruby - 如何将类名作为变量传递给ruby中的另一个类

我正在尝试学习用ruby​​创建一个多类程序。我编写了一个引擎类和一些其他类,如城市、街道等,但在将类名作为变量传递给其他类时遇到了问题。下面的代码抛出错误:“City.rb:15:in'intro':undefinedlocalvariableormethodgame'for#(NameError)”。我在某种程度上理解这个问题,但我认为这个城市不需要知道任何关于游戏对象,我认为它只需要获取它并将其传回即可。但表面上我对如何在类之间传递变量(尤其是类名)有误解。我的设计有什么问题?#Game.rbrequire'./City.rb'classEnginedefinitialize(c

ruby - 如何将一个 config.ru 文件变成一个单独的 Rack 应用程序?

我有一个开始有重复代码的config.ru文件:map'/route1'dorunSampleApp.newendmap'/route2'dorunSampleApp.newend我想把这个config.ru文件变成它自己的Rack应用程序,这样我所要做的就是:map'/'dorunMyApp.newend创建自己的Rack应用程序的正确方法是什么?具体来说,我如何创建一个类,以便我可以在我的类中使用map方法来定义一堆路由?解决方法:这是一个可行的解决方案:classMyAppdefinitialize@app=Rack::Builder.newdo#copycontentsofyo

ruby - 在 Ruby 类上定义哪个方法来为其实例提供复制/克隆?

我有一个具有单个属性:contents的Pointer类,它指向MyObject类的对象。classMyObjectdefhello;"hello"endendclassPointerattr_reader:contentsdefinitialize(cont);@contents=contend#perhapsdefinesomemorestateend我希望我的Pointer能够self复制。我知道#dup方法是默认定义的,而#clone方法应该被覆盖以便能够进行深度复制。但是在这里,副本不必太深。所以,我遇到的第一个难题是,我是否应该重写#dup方法,因为我真的不想复制我的Poi

Ruby 构造函数和异常

Ruby新手,我想弄清楚使用什么习惯用法来将某些整数值限制为类的构造函数。根据我目前所做的,如果我在initialize()中引发异常,该对象仍会创建,但将处于无效状态(例如,某些nil实例变量中的值)。我不太明白我应该如何限制这些值而不进入看起来不必要的大步骤,例如限制对new()的访问。所以我的问题是,我可以通过什么机制来限制实例化对象的值范围? 最佳答案 嗯,你是完全正确的,即使initialize引发异常,对象仍然存在。然而,任何人都很难坚持引用,除非你从initialize中泄漏self就像我刚写的下面的代码一样:>>cl

ruby - 我怎样才能随机遍历一个大范围?

我想随机遍历一个范围。每个值只会被访问一次,所有值最终都会被访问。例如:classArraydefshuffleret=dupj=lengthi=0whilej>1r=i+rand(j)ret[i],ret[r]=ret[r],ret[i]i+=1j-=1endretendend(0..9).to_a.shuffle.each{|x|f(x)}其中f(x)是对每个值进行操作的函数。Fisher-Yatesshuffle用于有效地提供随机排序。我的问题是shuffle需要对数组进行操作,这并不酷,因为我正在处理天文数字的大数。Ruby会快速消耗大量RAM来尝试创建一个巨大的数组。想象一下

ruby - 所有 ruby​​ 文件都应该有一个与文件夹结构相匹配的模块结构吗?

是否所有文件都在具有文件夹结构(类似于java包)的模块中的ruby​​约定?例如,如果我的文件结构如下所示库/人/工具此处的文件是否具有如下模块结构:modulePeoplemoduleUtils#somefunctionalityforPeople::Utilsendend我问的原因是因为我一直在阅读一些Rails代码,并且似乎有几个文件在这样的文件结构中,但没有任何模块声明。我猜这是为了让您可以使用效用函数而不必包含People::Utils。ruby是否有关于何时应该使用模块以及何时不应该使用模块的约定? 最佳答案 这是Ra

ruby - 你如何创建一个 mongoid 对象的副本/复制?

ActiveRecord安全supportsdup,但mongoid似乎无法正确处理它。我想做以下事情:x=MyModel.newx.savey=x.dupy.savey应该是一个全新的对象,这样:x!=yx.id!=y.id 最佳答案 试试这个:x=Item.newx.savey=x.cloney.save它应该更改_id并复制所有其他字段。我注意到这似乎不适用于嵌入式文档。对于原始文档中的每个嵌入式文档,它会在克隆中使用新ID创建一个空白的嵌入式文档,但不会填充任何其他字段。如果使用嵌入式文档,最好编写自己的类方法。