ruby的方法块并不像js,as,c#,kotlin或者其他语言一样那样可以直接传递,他非要转换成proc的对象才能处理,这点有些蛋疼
#高阶函数
#方法参数需要加前缀&来识别
def n_times(times,&sth)
#方法块想转换成可以返回的proc需要用lambda{}关键字来转换
lambda {times.times {sth.call}}
end
#传入两个参数,返回一个proc对象
f=n_times(5){print 1}
#proc对象需要显式调用call,而不像js,as一样直接f()
f.call
#输出结果11111
总体来说,这种不必要的转换还是很蛋疼的,也不知道为什么要这样设计,js,as那种方法和普通数据参数看成一样的好用多了
欢迎关注我的github
https://github.com/luckyCatMiao