विभिन्न Lisps में, यह मुझे के रूप में यदि वे सिर्फ सामान्य मूल्यों गया था कार्यों का एक दृश्य बनाने के लिए संभव है:स्कैला में एक ही धर्मार्थ के कार्यों की सूची को परिभाषित करने के लिए कैसे?
(def ops [+ - * /])
कौन सा मैं तो के माध्यम से पुनरावृति कर सकते हैं, फिर से, के रूप में यदि वे सिर्फ सामान्य मूल्यों थे :
(doseq [op ops] // (doseq (op ops) is like for (op <- ops) in scala
(println (op 1 2 3 4)))
अब, मैं स्काला में कुछ बातें की कोशिश की है, उन सभी को नाकाम रहने:
scala> List(+, -, *, /)
<console>:1: error: illegal start of simple expression
List(+, -, *, /)
^
scala> List[Double => Double](+, -, *, /)
<console>:1: error: illegal start of simple expression
List[Double => Double](+, -, *, /)
^
scala> List[Double => Double](+_, -_, *_, /_)
<console>:8: error: not found: value *
List[Double => Double](+_, -_, *_, /_)
^
<console>:8: error: not found: value/
List[Double => Double](+_, -_, *_, /_)
^
तो सूची निर्धारित की सही प्रक्रिया क्या है स्कैला में कार्यों/ऑपरेटरों का?
नीचे अच्छा जवाब नहीं है, लेकिन, जैसा कि आप देख सकते हैं, आप केवल * एक ही टाइप * कार्यों इस तरह से परिभाषित कर सकते हैं: प्रदान की ype), तो आपको अच्छा अंडरस्कोर सिंटैक्स का उपयोग कर सकते हैं। यदि आप अलग-अलग टाइप किए गए कार्यों को स्टोर करना चाहते हैं तो आपको * विषम * संरचनाओं (उदाहरण के लिए सूची) का उपयोग करना होगा। – DaunnC
@DaunnC क्या आप सवाल के दूसरे जवाब में * विविध विषम संरचनाओं * के उपयोग पर विस्तार से ध्यान देंगे? में सहारना करता। –