Có cách nào để truy cập giá trị trả về của hàm đang được truy tìm bởi hàm được chỉ định làm tham số thoát để theo dõi không? Nghe có vẻ khó hiểu nhưng tôi không thể đơn giản hóa câu hỏi mà không mất thông tin. Đây là một ví dụ đơn giản.Cách truy cập giá trị trả về của hàm đang được truy tìm
Chúng tôi có một chức năng đơn giản
add10 <- function(a){
a + 10
}
Và một số chức năng mà chúng tôi muốn được gọi khi cuộc gọi đến add10 thoát.
trace.exit() <- function(){
...
}
Truy tìm được thiết lập theo cách sau.
trace(add10, exit=trace.exit)
Và chúng tôi làm một cuộc gọi đến add10
add10(5)
Theo tôi được biết ngay bây giờ, trace.exit
sẽ được gọi sau khi add10
hoàn tất thi công. Có cách nào để truy cập giá trị trả lại của add10
bên trong trace.exit
không?
Tôi cảm thấy cần phải có. Nhưng chơi với sys.frames
và nhìn qua các môi trường tôi đã không thể có được nó.
Lý do làm như vậy là muốn thu hút tất cả các cuộc gọi đến một số chức năng và trả về các giá trị mà chúng cung cấp.
UPD Giải pháp với wrapper hoặc một cái gì đó tương tự như là tốt đẹp, nhưng trace
đã thực hiện một mô hình trang trí, vì vậy câu hỏi của tôi là về việc truy cập giá trị trả về từ trace
, không phải về giải quyết vấn đề của trang trí trong R.
Rất khó để biết giá trị trả lại đang ẩn ở đâu. Trong C, các giá trị gần nhau trong [context.c] (https://github.com/wch/r-source/blob/fba3c1b0ac71bb5a681b2c1437ce2a38dfa3bb61/src/main/context.c#L197). Từ những gì tôi có thể nói, 'jumpfun' được cho là đặt giá trị trả về thành' val' trong ngữ cảnh chính xác, nhưng nó xuất hiện hàm 'on.exit' có thể chạy trong một ngữ cảnh khác. Tôi đã hy vọng nó có thể có sẵn trong '.Last.value' nhưng điều đó dường như không phải là trường hợp. Có lẽ đó là giao diện người dùng cập nhật giá trị đó. – MrFlick