هناك نحوي السكر للربط قيمة داخل وظيفة غير معروفة في سكالا؟

StackOverflow https://stackoverflow.com/questions/298167

سؤال

وبدلا من كتابة

((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)

وهتاف

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top