2009-04-20 28 views

Trả lời

6

Không phải 100%. Các khối Ruby yêu cầu bạn đặt tên cho tất cả các tham số của bạn (theo như tôi biết). Một khối trong Groovy không chỉ định tham số có một tham số ngụ ý, it.

+0

Không chính xác. Groovy hỗ trợ các tham số được đặt tên để chặn. Xem: http://groovy.codehaus.org/JN2515-Closures#JN2515-Closures-ClosureParameters – jiggy

+3

Tất nhiên Groovy hỗ trợ các tham số có tên là các khối. :-) Nhận xét của tôi là trong Groovy, nếu khối của bạn có một tham số, đặt tên nó là tùy chọn --- trong khi Ruby là bắt buộc. –

+0

Xin lỗi, tôi đã hiểu sai :) – jiggy

1

Một khối theo ý nghĩa chỉ là một hàm bất kỳ. Tôi chưa bao giờ được lập trình java, nhưng đây là một số mẫu mã cho các ngôn ngữ khác để cho bạn biết rằng các khối tương tự như truyền các hàm ẩn danh.

Ruby:

def add_5 
    puts yield + 5 
end 

add_5 { 20 } 
# => 25 

Javascript:

var add_5 = function(callback){ 
    return callback.call() + 5; 
} 

add_5(function(){ return 20 }); 
// returns 25 

Lua:

local function add_5(callback) 
    print(callback() + 5); 
end 

add_5(function() 
    return 20; 
end) 
-- returns 25 

Nói cách khác, nếu Java hỗ trợ chức năng vô danh như thế, bạn đã cho mình một khối! Khi chúng hoạt động, chúng có thể lấy các đối số, giống như các khối. Dưới đây là một ví dụ khác về Lua:

local function add_something(callback) 
    callback(5/2); 
end 

add_something(function(a) 
    print(a + 5); 
end) 
-- 7.5 
0

Tôi không quen thuộc với Ruby, nhưng tôi nghĩ câu trả lời là không. Hãy xem doc.

Các vấn đề liên quan