2010-07-13 11 views
33

Scala 2.8 Predef sınıfından bakarak, "yerel olarak" bir yöntem olduğunu görüyorum. Anlatabildiğim kadarıyla, "@inline" ek açıklamaları dışında, Predef.identity ile aynı. Ne için, ve neden Predef (ve böylece Scala herhangi bir yerde kullanılabilir) içinde olmak için yeterince önemlidir?Predef.locally ne yapar ve Predef.identity'den ne fark eder

+4

Bak: http://www.scala-lang.org/node/3594 – retronym

+0

Vay canına, aslında o parçanın bir parçasıydım ve hepsini unutmuştum. Bunu bir yorumdan ziyade bir cevap yaparsanız, kabul edip –

+2

Hmm. Hala 'kimlik' ve 'yerel olarak' arasındaki farkın ne olduğu ile ilgilenecektim. – mkneissl

cevap

39

Burada tartışılmıştır: http://www.scala-lang.org/node/3594

fikri bir amacı/sınıf/özelliğin bir şablonla 'sarkan' Yerel blok kafa karıştırıcı programcı hata önlemek amaçlanmıştır.

object test { 
    object a 
    { 
    val x = 1 
    } 

    object b 

    { // oops, extra newline disassociates this block with the object b 
    val x = 1 
    } 
} 
test.a.x 
//test.b.x // doesn't compile 

programcı gerçekten bu blok tek başına isterse

, locally kullanılabilir: Bu iş parçacığı aynı zamanda ilk kod, bir kullanımdan kaldırılması uyarı üretecektir önerdi

object test { 
    object a 
    { 
    val x = 1 
    } 

    object b 

    locally { 
    val x = 1 
    } 
} 

. Bu henüz eklenmedi.