小编Jör*_*tag的帖子

ruby send方法传递多个参数

尝试动态创建对象和调用方法

Object.const_get(class_name).new.send(method_name,parameters_array)
Run Code Online (Sandbox Code Playgroud)

这工作正常

Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
Run Code Online (Sandbox Code Playgroud)

但为2输入错误数量的参数1

Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
Run Code Online (Sandbox Code Playgroud)

定义的随机类是

class RandomClass
def i_am_method_one
    puts "I am method 1"
end
def i_take_arguments(a)
    puts "the argument passed is #{a}"
end
def i_take_multiple_arguments(b,c)
    puts "the arguments passed are #{b} and #{c}"
end
    end
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我如何动态地发送多个参数到ruby方法

ruby

120
推荐指数
2
解决办法
8万
查看次数

Ruby执行尾部调用优化吗?

功能语言导致使用递归来解决许多问题,因此许多函数执行尾调用优化(TCO).TCO导致从另一个函数调用函数(或者本身,在这种情况下,这个特性也称为Tail Recursion Elimination,它是TCO的一个子集),作为该函数的最后一步,不需要新的堆栈帧,这减少了开销和内存使用.

Ruby显然已经从函数式语言(lambdas,map等函数等)中"借用"了许多概念,这让我很好奇:Ruby是否执行尾调用优化?

ruby functional-programming tail-recursion

90
推荐指数
3
解决办法
1万
查看次数

Ruby总是围捕

我觉得自己像个疯子.我想将所有分数四舍五入到最接近的整数.

例如,67/30 = 2.233333333334.我想将其舍入到3.如果结果不是一个整数,我永远不想向下舍入,只有向上.

这就是我正在尝试的:

puts 67/30.to_f.ceil
Run Code Online (Sandbox Code Playgroud)

以下是我正在寻找的例子:

  • 67/30 = 3
  • 50/100 = 1
  • 2/2 = 1

有任何想法吗?非常感谢!

ruby

52
推荐指数
1
解决办法
4万
查看次数

Ruby有一个正式的规范(比如Java语言规范(JLS))吗?

是否存在Ruby的明确规范,类似于Java Java语言规范.谷歌搜索ruby语言规范提供了http://ruby-std.netlab.jp/,但该网站已关闭,我不确定它是否是最新的

ruby standards specifications

22
推荐指数
2
解决办法
3978
查看次数

为什么在Ruby中将Regexp对象视为“虚假”?

Ruby有“的普遍想法感实性 ”和“ falsiness ”。

Ruby 确实有两个特定的布尔对象类,TrueClassFalseClass,其中单例实例分别由特殊变量true和表示false

但是,真实性虚假性不仅限于这两个类的实例,该概念是通用的,适用于Ruby中的每个对象。每个对象都是真实的虚假的。规则很简单。特别是,只有两个对象是虚假的

每个其他对象都是真实的。这甚至包括在其他编程语言中被认为是虚假的对象,例如

这些规则是语言内置的,并且不是用户定义的。没有to_bool隐式转换或类似的东西。

这是ISO Ruby语言规范的引文:

6.6布尔值

一个对象可以分为真对象假对象

只有falsenil是伪造的对象。false是该类的唯一实例FalseClass(请参见15.2.6),false表达式 …

ruby regex boolean yarv jruby

15
推荐指数
2
解决办法
165
查看次数

scala组合子演算数据模型的类型推断

我正在尝试在scala中使用非常轻量级的组合子演算编码.最初,我只是实现S和K组合器,应用程序和常量值.后来我希望提升scala函数并允许将表达式作为scala函数进行求值.但是,这是为了以后.这是我到目前为止所拥有的.

/** Combinator expression */
sealed abstract class CE

/** Application: CE| (x y) <=> LC| (x:(A=>B) y:A) : B */
case class Ap[A <: CE, B <: CE, X](e1: A, e2: B) extends CE

/** A raw value with type */
case class Value[T](v: T) extends CE

/** Some combinator */
sealed abstract class Comb extends CE

/** The S combinator: CE| S x y z
 *                    LC| ?x:(A=>B=>C).?y:(A=>B).?z:A.(x z (y z)) : C
 *  S : ?A.?B.?C. (A …
Run Code Online (Sandbox Code Playgroud)

scala type-inference implicit combinatory-logic

9
推荐指数
1
解决办法
498
查看次数

哪种解释语言可以用于微芯片PIC32?

我正在寻找适用于微芯片PIC32的解释语言.

目前,我发现LUAPAWN正在工作,但在选择之前,我想知道是否已知某些其他语言在PIC32中工作.

embed embedded microchip pic

7
推荐指数
1
解决办法
3046
查看次数

==和案例之间的区别?

我是Ruby的新手,我正在努力解决一些困扰我的问题.在编写一个简单的解析器时,我发现将char与a进行比较==会产生与将其与case表达式进行比较不同的结果:

File.open('Quote.txt') do |f|
  f.chars.each do |c|
    puts c == '"' ? 'Quote' : 'Err'

    puts case c
    when '"' then 'QuoteCase'
    else          'ErrCase'
    end

    p c == '"', c === '"', c
  end
end
Run Code Online (Sandbox Code Playgroud)

假设Quote.txt是一个包含单引号字符(0x22)的1字节文件,这会产生:

Quote
ErrCase
true
true
"\""
Run Code Online (Sandbox Code Playgroud)

我假设我做错了什么,但我无法弄清楚它是什么.有人可以帮忙吗?

顺便说一句,这是在Ruby 1.9.2中.

ruby parsing file

6
推荐指数
1
解决办法
163
查看次数

使用Ruby进行任意精度算术

Ruby怎么做到这一点?Jörg或其他任何人都知道幕后发生了什么吗?

不幸的是我不太了解C,所以bignum.c对我没什么帮助.我有点好奇,有人可以用简单的英语解释它使用的奇迹算法背后的理论.

irb(main):001:0> 999**999
Run Code Online (Sandbox Code Playgroud)

368063488259223267894700840060521865838338232037353204655959621437025609300472231530103873614505175218691345257589896391130393189447969771645832382192366076536631132001776175977932178658703660778465765811830827876982014124022948671975678131724958064427949902810498973271030787716781467419524180040734398996952930832508934116945966120176735120823151959779536852290090377452502236990839453416790640456116471139751546750048602189291028640970574762600185950226138244530187489211615864021135312077912018844630780307462205252807737757672094320692373101032517459518497524015120165166724189816766397247824175394802028228160027100623998873667435799073054618906855460488351426611310634023489044291860510352301912426608488807462312126590206830413782664554260411266378866626653755763627796569082931785645600816236891168141774993267488171702172191072731069216881668294625679492696148976999868715671440874206427212056717373099639711168901197440416590226524192782842896415414611688187391232048327738965820265934093108172054875188246591760877131657895633586576611857277011782497943522945011248430439201297015119468730712364007639373910811953430309476832453230123996750235710787086641070310288725389595138936784715274150426495416196669832679980253436807864187160054589045664027158817958549374490512399055448819148487049363674611664609890030088549591992466360050042566270348330911795487647045949301286614658650071299695652245266080672989921799342509291635330827874264789587306974472327718704306352445925996155619153783913237212716010410294999877569745287353422903443387562746452522860420416689019732913798073773281533570910205207767157128174184873357050830752777900041943256738499067821488421053870869022738698816059810579221002560882999884763252161747566893835178558961142349304466506402373556318707175710866983035313122068321102457824112014969387225476259342872866363550383840720010832906695360553556647545295849966279980830561242960013654529514995113584909050813015198928283202189194615501403435553060147713139766323195743324848047347575473228198492343231496580885057330510949058490527738662697480293583612233134502078182014347192522391449087738579081585795613547198599661273567662441490401862839817822686573112998663038868314974259766039340894024308383451039874674061160538242392803580758232755749310843694194787991556647907091849600704712003371103926967137408125713631396699343733288014254084819379380555174777020843568689927348949484201042595271932630685747613835385434424807024615161848223715989797178155169951121052285149157137697718850449708843330475301440373094611119631361702936342263219382793996895988331701890693689862459020775599439506870005130750427949747071390095256759203426671803377068109744629909769176319526837824364926844730545524646494321826241925107158040561607706364484910978348669388142016838792902926158979355432483611517588605967745393958061959024834251565197963477521095821435651996730128376734574843289089682710350244222290017891280419782767803785277960834729869249991658417000499998999

ruby math bignum arbitrary-precision

5
推荐指数
1
解决办法
2251
查看次数

如何创建不重新创建具有相同输入参数的对象的类

我试图创建一个不重新创建具有相同输入参数的对象的类.当我尝试使用与创建已存在对象相同的参数来实例化一个类时,我只希望我的新类返回一个指向已经创建的(昂贵创建的)对象的指针.这是我到目前为止所尝试的:

class myobject0(object):
# At first, I didn't realize that even already-instantiated
# objects had their __init__ called again
instances = {}
def __new__(cls,x):
    if x not in cls.instances.keys():
        cls.instances[x] = object.__new__(cls,x)
    return cls.instances[x]
def __init__(self,x):
    print 'doing something expensive'

class myobject1(object):
    # I tried to override the existing object's __init__
    # but it didnt work.
    instances = {}
    def __new__(cls,x):
        if x not in cls.instances.keys():
            cls.instances[x] = object.__new__(cls,x)
        else:
            cls.instances[x].__init__ = lambda x: None
        return cls.instances[x]
    def __init__(self,x):
        print …
Run Code Online (Sandbox Code Playgroud)

python multiton

2
推荐指数
2
解决办法
1430
查看次数