Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如果涉及到块,如何对一个对象调用多个方法?_Ruby - Fatal编程技术网

Ruby 如果涉及到块,如何对一个对象调用多个方法?

Ruby 如果涉及到块,如何对一个对象调用多个方法?,ruby,Ruby,假设字符串参数可能包括整数: def turn_string_into_integer_array(string) array = string.split(" ").collect { |i| i.to_i } end 如果在同一行中,我想使用inject方法对整数求和,如果语句末尾有一个块,我该怎么做 只需在块的末尾加上一个句点即可 def turn_string_into_integer_array(string) string.split(" ").collect { |i

假设字符串参数可能包括整数:

def turn_string_into_integer_array(string)
    array = string.split(" ").collect { |i| i.to_i }
end

如果在同一行中,我想使用inject方法对整数求和,如果语句末尾有一个块,我该怎么做

只需在块的末尾加上一个句点即可

def turn_string_into_integer_array(string)
  string.split(" ").collect { |i| i.to_i }.inject(:+)
end

你为什么不直接调用这个方法呢

string.split(" ").collect { |i| i.to_i }.inject(0) {|acc, el| acc + el }
然而,这将更习惯地写为

string.split(" ").map(&:to_i).inject(0, :+)

string.split(“”)。收集(&:to_i)。注入(:+)
。。这就是你想要的吗?我必须使用这个符号吗?或者你可以在Do/end或{}符号之后继续吗?与
string.split(“”)相同。collect{I | I.to_I}.inject(:+)
@ArupRakshit在注释中不回答。这就是下面问题的答案。@MBO正确!!我不知道我的案子里会出现鬼错误。。因此我在这里回答。。我无法提交该问题。我在评论中提交了..:P