创建一个可以这种方式调用的方法
some_named_method(string_1, string_2, int_1, int_2)[Integer]
我刚刚得知如果一个方法被调用some_named_method[80]
- 那个方法是一个Proc / lambda(?还是有点不确定,任何详细说明都会很棒)
指南是,参数是可选的,基于提供的测试,以两个为一组,但括号中的数字将始终存在。它用于创建一个操作的数组,取决于传入的参数。所以 - >
some_named_method[Integer]
#=> [0..Integer]
some_named_method('Hey', 'There')[Integer]
#一些基于字符串参数的操作和=> [0..Integer]
some_named_method('嘿','有',3,5)[整数]
如何以这种方式使lambda具有可选参数?
答案(我认为)
当以这种方式调用方法some_named_method(*args)[Integer]
时,发生了两件事之一。该方法返回一个数组,因此在该数组上调用#[]
,返回指定索引处的任何对象
或
该方法包含proc / lambda,#[some_arguement]
内的任何内容都作为参数传递给proc / lambda
答案 0 :(得分:1)
如果我理解了这个问题,你需要一个接受任意数量参数的方法,并返回一个在使用[]
方法时会创建一系列数字的对象。
此方法接受任意数量的参数(使用*
splat运算符),然后返回一个可以使用[]
的proc。
def some_named_function(*args)
proc do |length|
# Do something with the args?
(0..length).to_a
end
end
然后就可以这样使用:
some_named_function[3] # => [0, 1, 2, 3]
some_named_function('optional', 'args')[1] # => [0, 1]