jjzjj

ruby - 为什么不能在 Symbols 或 Fixnums 上定义单例方法?

有一些Ruby类不允许在其实例上定义单例方法。例如,符号:var=:asymboldefvar.hello"hello"end#TypeError:can'tdefinesingletonmethod"hello"forSymbol我认为这可能是对所有立即值的限制,但它似乎适用于nil、true和false(但不是Fixnum或Bignum的实例):var=truedefvar.hello"hello"endvar.hello#=>"hello"我不明白为什么Ruby允许在某些类的对象上定义单例方法,但不允许在其他类上定义单例方法。 最佳答案

ruby-on-rails - 如何使用混合字符串和 Fixnums 对 Ruby 数组进行排序

我需要在Ruby中对混合数组进行排序。它有Fixnum和Stringar=[1,"cool",3,"story",4,"bro"]我希望Fixnum优先于字符串,而不关心字符串的顺序。ar=[1,3,4,"cool","story","bro"]我试过为classArray写一个方法ClassArraydefmixed_sortself.sortdo|a,b|ifa.class==Fixnumandb.class!=a.class-1elseabendendendend我想我可能只是将一个block传递给Array#sort方法。然而,这种方法在碰到block之前仍然会抛出错误[1]p

ruby - 计算 Ruby 数组中的 Fixnums

我有一个带有任意数量参数的函数。我的函数如下所示:sum(n,*rest)我如何遍历数组rest以便检查参数是否为Fixnum,如果是则求和,否则不执行任何操作?例如:sum(5,1,2,k,D,3)#=>6 最佳答案 做如下:ary=rest.grep(Fixnum)#returnthesummationofthearrayelements,ifarrayisnotempty#0,whenarrayisemptyorcontainsonlyoneelementas`0`.ary.reduce(0,:+)看#reduce和grep.