سؤال

وأنا أعمل مع خريطة في سكالا والقيام المعتاد "اذا لم يكن هناك قيمة المرتبطة مع مفتاح، وخلق، ووضعها في خريطة وإعادته":

def alphaMemory(key : AlphaMemoryKey) = {
    var am = map.getOrElse(key, null)
    if(am == null) {
        am = new AlphaMemory(key)
        map.put(key, am)
    }
    am
}

للي، وهذا لا يشعر مثل الرمز سكالا اصطلاحي. بدا الامر وكأننا جافا. هل هناك طريقة أكثر مقتضبة كتابة هذا؟ بدا الأمر وكأنه ربما أتمكن من تجاوز Map.default () لادخال قيمة جديدة وإعادته. لست متأكدا بالرغم من ذلك.

وشكرا!

هل كانت مفيدة؟

المحلول

mutable.Map ديه < وأ href = "http://www.scala-lang.org/api/current/scala/collection/mutable/Map.html#getOrElseUpdate(key:K،op:=>V):V" يختلط = "noreferrer نوفولو "> getOrElseUpdate الذي يفعل بالضبط ما تريد، لا لغة لزم الأمر.

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