2015-01-14 2 views
1

기본 속성에는 _ = 구문이 있습니다. getter와 setter에 대한 Java의 대략적인 것들입니다. 그러나 Java의 색인 된 속성과 비교할 수있는 무언가가 있습니까?스칼라에서 인덱싱 된 속성?

설정 :

titles.title(1) = "title of 1" // returns nothing 

은 방법 :

나는 이런 식으로 뭔가를 할 수 있도록 쉽게 사람들의 생활을하고 싶습니다

titles.title(1) // returns "title of 1" 

스칼라와 그 수 있습니까?

UPDATE :이 어쩌면 같은 예제 코드

class Foo { 
    val title = new IndexedProperty[Int, String] 
} 

class IndexedProperty[A, B] { 
    var map = Map.empty[A, B] 

    def apply(key: A): Option[B] = map.get(key) 

    def update(key: A, value: Option[B]): Unit = { 
    value match { 
     case Some(v) => map += (key -> v) 
     case None if map.contains(key) => map -= key 
     case _ => 
    } 
    } 
} 

val foo = new Foo 
foo.title(1) = Some("Title of 1") 
println(a.title(1)) // yields Some("Title of 1") 
println(a.title(2)) // yields None 

답변

2

뭔가 :

object titles { 
    object title { 
    def apply(i: Int) = "apply " + i 
    def update(i:Int, s: String) = "update " + i + " = " + s 
    } 
} 

은 객체와 같은 클래스의 동일한 방식으로 작동합니다.

+0

업데이트 방법에 대해 알지 못했습니다. 내가 뭔가를 해킹 할 수 있는지 보자. 감사 ! –