草庐IT

c++ - 零大小的成员子对象。为什么不?

全部标签

ruby - 为什么 split (' ' ) 试图变得(太)聪明?

我刚刚发现String#split有以下奇怪的行为:"a\tbc\nd".split=>["a","b","c","d"]"a\tbc\nd".split('')=>["a","b","c","d"]"a\tbc\nd".split(//)=>["a\tb","c\nd"]Thesource(来自2.0.0的string.c)超过200行,包含这样一段话:/*L5909*/elseif(rb_enc_asciicompat(enc2)==1){if(RSTRING_LEN(spat)==1&&RSTRING_PTR(spat)[0]==''){split_type=awk;}}后来,在

ruby - 为什么 rvm install 2.0.0 要求输入 sudo 密码?

我正在尝试通过rvm安装ruby​​2.0.0-p247。但是,它要求输入密码。提供sudo密码正常吗?我没有在sudoers文件中配置sudo密码。我正在使用OracleEnterpriseLinux6x64。 最佳答案 sudo用于autolibs-这意味着RVM将安装所需的软件,如openssh或libyaml,这是标准ruby​​正常工作所必需的。您可以更改autolibs以查看所需的包而不是安装它们:rvmautolibsread-fail并恢复到安装要求的默认设置:rvmautolibsreset

ruby - ActiveRecord - 在连接模型中查找具有共享属性的所有对象

我有三个模型classBoat我正在尝试编写一个简单的ActiveRecord查询来查找所有帆船类型的船。类似于Boat.where(classifications:"Sailboat") 最佳答案 我认为这可行:Boat.joins(:classifications).where(classifications:{name:'Sailboat'})#nameorwhateverfieldcontainsSailboat生成此查询:SELECT`boats`.*FROM`boats`INNERJOIN`boat_classifica

ruby - 为什么 inspect for the subclasses of built-in classes 中没有列出实例变量?

当我对内置类进行子类化时,为什么inspect中的行为会发生变化。但是当我子类化一个自定义的时没有看到。classMainErrorendclassAnotherTestErrort=TestError.newputst.inspect#output:# 最佳答案 因为很多(大多数?全部?)内置类是用C语言编写的,并且覆盖#inspect。例如,Exception(StandardError的父类(superclass))定义#inspect如下:exc_inspect(VALUEexc){VALUEstr,klass;klass=

ruby - 为什么 Gemfile 语义版本控制运算符 (~>) 会产生与一个数字不一致的结果?

gemspec语义版本控制运算符~>(又名twiddle-wakka,又名pessimistic运算符)允许限制gem版本但允许进行一些升级。我经常看到它可以读作:"~>3.1"=>"Anyversion3.x,butatleast3.1""~>3.1.1"=>"Anyversion3.1.x,butatleast3.1.1"但是有了一个数字,这条规则就失效了:"~>3"=>"Anyversionx,butatleast3"*NOTTRUE!*"~>3"=>"Anyversion3.x"*True.Butwhy?*如果我想要“任何版本3.x”,我可以只使用“~>3.0”,这是一致的。就

ruby - 为什么我不能改变 self 的值(value)?

为什么我可以这样改变“self”:self.map!{|x|x*2}或者这样:self.replace(self.map{|x|x*2})但不是这样:self=self.map{|x|x*2}为什么Ruby不允许我更改“self”变量指向的对象,但允许我更改对象的属性? 最佳答案 不是答案,只是一个线索。a=[1,2]=>[1,2]a.object_id=>2938a.map!{|x|x*2}=>[2,4]a.object_id#differentdatabutstillthesameobject=>2938a.replace(a.

ruby - 为什么关键字参数必须作为带有符号键的散列传递,而不是 Ruby 中的字符串键?

我们不能将关键字参数作为带有字符串键的散列传递,关键字参数仅适用于作为符号键的散列。一个简单的例子:defmy_method(first_name:,last_name:)puts"first_name:#{first_name}|last_name:#{last_name}"endmy_method({last_name:'Sehrawat',first_name:'Manoj'})#=>first_name:Manoj|last_name:Sehrawatmy_method({first_name:'Bob',last_name:'Marley'})#=>first_name:Bo

ruby - 为什么 Date 类的新实例的默认年份等于 -4712?

运行:require'date'y=Date.newputs"defaultyearis#{y.year}"输出:defaultyearis-4712Date对象的年份默认为-4712是否有任何特殊原因?我认为也许有技术(或传统)原因。我用谷歌搜索并在Ruby文档(2.2.3)中查找了它,但我找不到关于为什么的答案。 最佳答案 公元前4713年1月1日是Julianday的开始,来自维基:TheJulianDayNumber(JDN)istheintegerassignedtoawholesolardayintheJulianday

c - (U) Ruby 扩展 : rb_gc_mark() and instance variables

我正在编写定义类的ruby​​扩展。如果我使用Data_Wrap_Struct()来实现我对rb_define_alloc_func()的回调,我是否需要手动标记和释放实例变量?还是仍然为我处理? 最佳答案 Ruby的GC将收集在您的Ruby对象的实例变量中引用的所有Ruby对象。您不必也不应该自己释放Ruby实例变量(即在您的扩展中使用rb_iv_set()/rb_iv_get()访问的任何对象)。但是,如果包装的Cstruct引用Ruby对象,那么您必须在传递给Data_Wrap_Struct()的mark回调中标记这些对象。(

ruby - 为什么 ruby​​game 和 gosu 比纯 opengl 慢?

我正在寻找一个好的图形框架来用Ruby制作一个漂亮的2D游戏。我做了3个非常简单的测试,看看哪个图形Ruby框架在Gosu之间更快。和Rubygame.该测试创建了1000个“Square”类的实例,这些实例使用框架的方法以最简单的方式移动和绘制一个红色方block。第三个测试是同一件事,但在纯OpenGL实现中(没有任何框架)。这是结果:纯OPENGL(使用ruby​​-opengl)80Fps:alttexthttp://grab.by/JTMGOSU(使用ruby​​-opengl+gosu)46Fps:alttexthttp://grab.by/JTCRUBYGAME(使用ru