草庐IT

final+构造方法

全部标签

ruby - 如何定义要从模块化 sinatra 应用程序的配置 block 中调用的方法?

我有一个Sinatra应用程序,归结起来,基本上是这样的:classMyApp不幸的是,这不起作用。我得到undefinedmethodread_config_fileforMyApp:Class(NoMethodError)read_config_file中的逻辑非常重要,因此我不想在两者中重复。如何定义可以从我的两个配置block调用的方法?还是我只是以完全错误的方式解决了这个问题? 最佳答案 configureblock似乎是在读取文件时执行的。您只需将方法的定义移到配置block之前,并将其转换为类方法:classMyApp

ruby - 将数据写入文件的最有效方法

我想将2TB的数据写入一个文件,future可能是PB。数据由全'1'组成。例如2TB的数据由"1111111111111......11111"组成(每个字节用'1'表示)以下是我的方法:File.open("data",File::RDWR||File::CREAT)do|file|2*1024*1024*1024*1024.timesdofile.write('1')endend也就是说,File.write被调用了2TB次。从Ruby的角度,有没有更好的实现方式? 最佳答案 你有几个问题:File::RDWR||File::

ruby - 为什么 Thor 具有 no_tasks 方法?

或者,更具体地说:我不能只使用私有(private)方法吗? 最佳答案 据我了解,Thor具有将方法标记为notasks的方法因为方法是任务的概念不同于方法的visibility的概念。.他们需要区分,因为他们从事不同的工作。类Thor的子类的每个方法(独立于其可见性)都被视为任务,除非它被明确标记为无任务。通过控制任务的可见性,您可以控制对该任务的访问,例如如果您将任务设为私有(private),则它不能被子类调用或直接被用户调用。访问控制不同于某事是否是任务。非任务的方法不能被Thor直接调用,它们不能有options.这里举个

ruby - 我如何从 Rational(或任何没有构造函数的类)继承?

例如,我可以很容易地继承自String,如下所示:classMyString'thingsandstuff'但是我如何继承没有构造函数的Rational呢?例如:defMyRatNoMethodError:undefinedmethod`new'forMyRat:ClassMyRat(10).inc#=>NoMethodError:undefinedmethod`MyRat'formain:ObjectMyRat.send(:initialize,10).inc#=>TypeError:alreadyinitializedclass#???#Noneofitworks!我找不到初始化新

ruby - 在方法调用中使用 Ruby 的 double-splat (`**` ) 有什么意义?

通过一个splat,我们可以将一个数组扩展为多个参数,这与直接传递数组有很大不同:deffoo(a,b=nil,c=nil)aendargs=[1,2,3]foo(args)#Evaluatestofoo([1,2,3])=>[1,2,3]foo(*args)#Evaluatestofoo(1,2,3)=>1然而,对于关键字参数,我看不出有什么区别,因为它们只是散列的语法糖:deffoo(key:)keyendargs={key:'value'}foo(args)#Evaluatestofoo(key:'value')=>'value'foo(**args)#Evaluatestofo

ruby - setter 方法 return self 不起作用,这是一个错误?

这个问题在这里已经有了答案:Isitpossibletohaveclass.property=xreturnsomethingotherthanx?(3个答案)关闭8年前。我想迭代一个字符串数组,并将它们中的每一个分配给类User的一个新实例,我希望我会得到一个User对象数组:classUserdefname=(name)@name=nameselfendendoriginal_array=["aaa","bbb","bbb"]result=original_array.collect{|str|User.new.name=str}但结果是一个字符串数组!putsresult.ins

ruby-on-rails - Rails 'service objects' 最佳实践 - 类方法或实例化

我正在按照我一直在研究的研讨会实现“服务对象”,我正在构建一个redditAPI应用程序。我需要对象返回一些东西,所以我不能只执行初始化程序中的所有内容。我有这两个选择:选项1:类需要实例化classSubListFromUserdefuser_subscribed_subs(client)@client=client@subreddits=sort_subs_by_name(user_subs_from_reddit)endprivatedefsort_subs_by_name(subreddits)subreddits.sort_by{|sr|sr[:name].downcase}

ruby - 潘戈+开罗;是否有处理文本中 <img> 样式标签的现有方法?

Pango语法支持一些纯文本标记。据我所知,这也没有扩展到嵌入图像。环顾四周,我找不到太多现有实现方式,但我之前没有做过pango+cairo工作,所以我可能会错过明显的社区。据我所知,一个合理的方法是只分析一个字符串,提取任何标签,创建cairo图像,然后相应地修改它们周围的pango布局。这看起来也像是以前有人做过的事情。我专门寻找这些问题的答案:pango+cairo是否已经解决了这个问题,我只是误读了文档?以前有没有做过这样的事情,引用在哪里?这是一种合理的方法,还是我应该尝试其他方法,什么?(还要注意我使用的是ruby​​,所以这可能会影响我的选择)

ruby-on-rails - 你如何编写一个只为测试文件执行一次的设置方法?

我希望有一种方法可以针对每个文件运行一次,而不是针对每个测试运行一次。我已经看到一些对“之前”方法的引用,但似乎不适用于MiniTest。理想情况下,像这样:classMyTest 最佳答案 Before用于minitest使用specdsl时,相当于setup。您可以使用setup,如果您在test_helper.rb文件中使用setup,它将在所有测试之前执行一次。设置也可以在测试类中声明。使用设置,放置一个标志并在第一次更新标志。x=0setupdoifx==0x=x+1puts"Incrementedinx=#{x}"end

Ruby:从模块中将多个方法作为 proc 返回的更好方法

从模块中返回一个类似proc的方法非常容易:moduleFoodefself.bar#Methodimplementationenddefself.baz#Methodimplementationenddefself.qux#Methodimplemenatationenddefself.zoo#MethodimplementationendendFoo.method(:bar)#Returnsaprocobject但是如果我想从同一个模块返回多个(但不是全部)方法怎么办?一种方法是:[:bar,:baz].inject([]){|memo,i|memo有没有更好、更敏捷的方法来做同样