هناك نحوي السكر للربط قيمة داخل وظيفة غير معروفة في سكالا؟
-
08-07-2019 - |
سؤال
وبدلا من كتابة
((x: Double) => (((y: Double) => y*y))(x+x))(3)
وأود أن أكتب شيئا مثل
((x: Double) => let y=x+x in y*y)(3)
هل هناك أي شيء مثل هذا النوع من السكر النحوي في سكالا؟
المحلول
وبالفعل هناك: انه دعا "val
". : -)
({ x: Double =>
val y = x + x
y * y
})(3)
ووالأقواس هي بالطبع اختياري هنا، أنا فقط تفضل لهم قوسين عند تحديد وظائف (بعد كل شيء، وهذا ليس اللثغة). الكلمة val
تعرف ملزم جديدة في نطاق المفردات الحالي. سكالا لا يجبر السكان المحليين على تحديد نطاقها الخاص، على عكس اللغات مثل اللثغة وML.
والواقع، ويعمل var
أيضا ضمن أي نطاق، لكنه يعتبر أسلوب سيء لاستخدامها.
نصائح أخرى
وOK، ها هي سفينة واحدة مع الربط:
({ x:Double => val y = x + x; y * y })(3)
وهتاف
لا تنتمي إلى StackOverflow