# 1. Bỏ qua đối số thứ hai của Curry và mã cứng dòng mới
Hãy thử đối số này là đối số cuối cùng của cat
bằng cách mã hóa cứng nó trong một hàm ẩn danh. Nó không thực sự tận dụng Curry
tranh cãi sau khi người đầu tiên:
catnip <- Curry(function(...) cat(..., "\n"))
# 2. Sản xuất chức năng bằng cách tách lạng bộ một chức năng ẩn danh
Dưới đây là một giải pháp thứ hai mà món cà ri đối số cuối cùng của cat
bằng cách sử dụng một chức năng ẩn danh mà sắp xếp lại lập luận cat
's.
catnip2 <- Curry(function(last.arg, ...) cat(..., last.arg), "\n")
# test
catnip2("hi", "there")
# 3. Sản xuất chức năng mong muốn bằng cách currying một chức năng cơ bản hơn
Có lẽ điểm thực của tất cả điều này là xem cách chúng ta có thể lấy các thành phần cơ bản và Curry chúng để có được những gì chúng ta muốn. Như vậy chúng ta có thể xác định một vị tướng last.arg.fun
và sau đó sản xuất các chức năng mong muốn bởi một cà ri của nó:
last.arg.fun <- function(FUN, last.arg, ...) FUN(..., last.arg)
catnip3 <- Curry(last.arg.fun, cat, "\n")
# test
last.arg.fun(cat, "\n", "hi", "there")
# test
catnip3("hi", "there")
Chúng ta có thể làm điều đó trong hai bước này nếu chúng tôi cần last.arg.cat
tại một số điểm:
last.arg.cat <- Curry(last.arg.fun, cat)
catnip4 <- Curry(last.arg.cat, "\n")
# test
last.arg.cat("\n", "hi", "there")
# test
catnip4("hi", "there")
Lưu ý rằng mỗi bài kiểm tra sẽ tạo ra một dòng nói hi có kết thúc bằng một dòng mới.
EDIT: nhiều giải pháp hơn.
Mèo đã khóc, yummmy! – John
Nifty trả lời tất cả. Chủ của tôi về 'do.call' không đầy đủ nhưng đang tiến triển. Cảm ơn :-) –