2013-04-04 40 views
5

Tôi có một chức năng do_something tiếp nhận bốn đối số và gọi một chức năng bên trong get_options:Làm cách nào để sử dụng lại các đối số trong một hàm bên trong?

do_something <- function(name, amount, manufacturer="abc", width=4){ 
    opts <- get_options(amount, manufacturer = manufacturer, width = width) 
} 

get_options <- function(amount, manufacturer="abc", width = 4) { 
    opts <- validate_options(manufacturer, width) 
} 

Đôi khi tôi làm get_options(400), lần khác tôi muốn ghi đè lên các đối số get_options(400, manufacturer = "def"), lần khác tôi gọi do_something("A", 400), hoặc do_something("A", 400, width=10).

Dường như tôi đang thừa kế bằng cách chỉ định cùng một giá trị mặc định cho đối số của tôi trong cả hai hàm. Có cách nào tốt hơn để họ chia sẻ các giá trị mặc định này không?

+0

Tôi đang gặp khó khăn để xem câu hỏi tại đây. Ví dụ của bạn không phải là đặc biệt chiếu sáng – mnel

Trả lời

7

Bạn có thể dùng lược (...) và chỉ cung cấp cho giá trị mặc định cho chức năng mức thấp nhất:

do_something <- function(name, amount, ...){ 
    opts <- get_options(amount, ...) 
} 

get_options <- function(amount, manufacturer="abc", width = 4) { 
    opts <- validate_options(manufacturer, width) 
} 

Bạn vẫn sẽ có thể chạy tất cả các bên dưới:

get_options(400) 
get_options(400, manufacturer = "def") 
do_something("A", 400) 
do_something("A", 400, width=10) 

và với cùng một kết quả.

+0

Cảm ơn, đã làm điều đó. – nachocab

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