2011-09-08 7 views
6

क्या रनटाइम पर पता लगाने का कोई तरीका है, फ़ंक्शन में कितने इनपुट (तर्क, पैरामीटर) हैं?गतिशील रूप से पता लगाएं कि फ़ंक्शन में कितने इनपुट हैं, रैकेट

(define (my-function unknown-function) 
    ... 
    (number-of-necessary-arguments unknown-function) 
    ...) 
+0

नहीं आप की जरूरत वास्तव में "लागू करें" है? – paul

उत्तर

11

आप procedure-arity उपयोग कर सकते हैं:

कहो, मैं करना चाहता हूँ।

(procedure-arity expt)      ; => 2 

ध्यान दें कि जब variadic कार्यों के साथ procedure-arity या case-lambda या की तरह उपयोग करते हुए, परिणाम और अधिक जटिल हैं:

(procedure-arity apply)     ; => (arity-at-least 2) 
(procedure-arity (case-lambda 
        ((x) x) 
        ((x y z) z) 
        ((a b c d e f . g) g))) ; => `(1 3 ,(arity-at-least 6)) 
संबंधित मुद्दे