Tag: 函数

聋人奶奶的错误 – 松 – 没法

正在为Def奶奶完成松树运动,并且思考会尝试进一步采取并抽象它以尽可能多地删除重复。 希望我对此的逻辑并不是太过分,只是试图将事物分离成函数。 但现在如果我输入 Bye 程序立即退出而不进入exitPlan函数。 欢迎任何建议。 puts ‘Say something nice to Grandma.’ puts ‘You may need to shout > ‘ speak = gets.strip counter = 0 speaks(speak) def speaks(speak) if speak != ‘Bye’ talk() else exitPlan() end end def talk() if speak == speak.downcase puts ‘Huh Speak up Sonny’ counter -= 1 else year = […]

在Ruby中定义sum函数

请帮助,我是一名Ruby学生,我知道如何使用.sum方法而不是这个:如何为数组定义一个sum函数,以便提供任何元素将导致它们的总和。 格式应为sum([数组输入])返回数组元素的总和。 例如:sum([])应该返回0,sum([1,2,3])返回6(#again,而不是[1,2,3] .sum)。 我被困在盒子里,非常感谢你的帮助。

如何将函数应用于数组并形成两个单独的数组?

我正在使用Ruby 2.4。 我有一个包含字符串数据元素的数组,看起来像 [“a word1 word2”, “b eff”, “a idaho orange”, “new old shoe”, “b mars”, …] 我想从上面形成两个数组,将一个函数( .split(/^(a|b)[[:space]]*/i )应用于数组的每个元素。但是,我无法弄清楚如何形成两个独立的arrays。以下 arr.map{ |x| x.split(/^(a|b)[[:space]]*/i) } 只产生一个数组,每个元素前面都有一个空白元素。 理想情况下,我希望输出为两个数组 [“a”, “b”, “a”, “”, “b”, …] [“word1 word2”, “eff”, “idaho orange”, “new old shoe”, “mars”, …]

是否可以在没有函数的语言中进行函数式编程?

在这篇评论中 ,有人说Ruby没有函数,只有方法。 如果Ruby没有函数,是不是可以在其中进行函数式编程? 或者我对术语“function”感到困惑? 我的意思是“函数式编程”在函数意义上作为第一类对象,而不是在禁止可变状态。

如果评估的Last语句是If语句,则返回Ruby中的内容

我的理解是ruby返回函数中计算的最后一个语句。 如果函数以if语句结束,该语句的计算结果为false,那该怎么办? def thing(input) item = input == “hi” if item [] end end puts thing(“hi”).class #> Array puts thing(“not hi”).class #> NilClass 我喜欢这个function(如果语句为false则返回nil ),但为什么不返回false (从赋值到item )?

如何在RubyFFI中将结构指定为函数的返回值?

我必须加载几个从库本身返回结构的函数。 attach_function ‘fn_name’, [], # … What do I put here? RubyFFI的Wiki页面似乎已经过时了,所以我在这里有点迷失。 如何创建FFI::Struct ,如何将其指定为本机函数的返回类型?

获取ruby函数对象本身

在Ruby中,一切都应该是一个对象。 但是我有一个很大的问题,就是通常的方式来定义函数对象 def f “foo” end 与Python不同,f是函数结果,而不是函数本身。 因此, f() , f , ObjectSpace.f都是”foo” 。 f.methods返回字符串方法列表。 如何访问函数对象本身?

Ruby函数与方法

在Ruby Programming Language ,第6章(第2段)中,他们指出: 许多语言区分没有关联对象的函数和在接收器对象上调用的方法。 因为Ruby是纯粹面向对象的语言,所以所有方法都是真正的方法,并且至少与一个对象相关联。 然后在第6段的中间: procs和lambdas都是函数而不是在对象上调用的方法。 我对这些陈述有点困惑。 Ruby是纯粹的纯OO,因此没有与对象无关的函数(如果这是纯OO的有效定义),或者是与Proc对象关联的procs / lambdas? Ruby中的函数和方法有什么区别? 任何帮助解析和理解这将是值得赞赏的。

Ruby圆括号调用语法

我正在阅读jbuilder的README并看到这些代码: class Person # … Class Definition … # def to_builder Jbuilder.new do |person| person.(self, :name, :age) end end end 我试图自己复制它,它要求一个call方法,所以: class Thing attr_accessor :name, :age def call(*args) puts args.inspect end end Thing.new.(:name, :age) # => [:name, :age] 那么为什么jbuilder会出现一个self ?

在Ruby中,为什么在使用“do”和“end”时,方法调用不能被视为一个单元?

以下问题与“ Ruby Print Inject Do Syntax ”问题有关。 我的问题是,我们可以坚持使用do和end并使其与puts或p吗? 这有效: a = [1,2,3,4] b = a.inject do |sum, x| sum + x end puts b # prints out 10 所以,是正确的说, inject是Array对象的实例方法,这个实例方法接受一段代码,然后返回一个数字。 如果是这样,那么它应该与调用函数或方法并返回返回值没有什么不同: b = foo(3) puts b 要么 b = circle.getRadius() puts b 在以上两种情况下,我们可以直接说 puts foo(3) puts circle.getRadius() 因此,无法通过以下两种方式直接使其工作: a = [1,2,3,4] puts a.inject do |sum, […]