Có rất nhiều cách để làm điều này trong Ruby, một trong số đó là sử dụng một Proc:
foo=Proc.new do |test|
puts test
end
3.upto(8) { foo.call("hello world") }
Đọc thêm về Procs:
Cập nhật, phương pháp trên có thể được viết lại như sau:
# using lower-case **proc** syntax, all on one line
foo = proc { |test| puts test }
3.upto(8) { foo.call("hello world") }
# using lambda, just switch the method name from proc to lambda
bar = lambda { |test| puts test }
3.upto(8) { bar.call("hello world") }
Về cơ bản chúng là các phương pháp tương tự, với sự khác biệt tinh tế.
Và cuối cùng, có lẽ có nhiều cách thanh lịch hơn để làm những gì tôi đã vạch ra, hãy lắng nghe ý kiến của mọi người với cách tốt hơn. Hi vọng điêu nay co ich.
Cảm ơn rất nhiều. Đối với liên kết nhiều hơn. Bạn có thể tử tế đến mức đề cập đến cả lambdas nữa không? Vì mục đích lịch sử. –
@Shingetsu, tôi đã thêm và cập nhật với lambda, cũng như phiên bản đơn giản hóa của phương pháp proc quá – stephenmurdoch
@Shingetsu: Lambdas không phải là lịch sử. Bạn hầu như nên luôn luôn * sử dụng chúng thay vì Procs. Chúng hoàn toàn nổi bật hơn và là tiêu chuẩn. – Linuxios