2016-07-07 7 views
2

이 고려 : 당신이 원하는 경우코 틀린 확장 기능

inline fun View.setVisible() = apply { visibility = View.VISIBLE } 

MyView.setVisible() 

또는이 :

inline infix fun View.vis(vis: Int) = apply { visibility = vis } 
MyView vis View.VISIBLE 

는하여 동일한 작업을 수행의 어쨌든 거기

MyView.setVisibility(View.VISIBLE) 

이 단순화 될 수있다 이렇게 :

MyView.VISIBLE 
그것은 "게터"상태를 수정할 수 있지만, 당신은 extension property 사용할 수 있습니다에 대한 조금 이상한 것 같다

답변

5

6,:

val View.VISIBLE: Unit 
    get() { 
     visibility = View.VISIBLE 
    } 

을 그리고 당신은 또한 새로운 가시성 값을 반환하거나 자체를 반환 할 수는 체인 잠재적 할 수 있도록 전화.

val View.VISIBLE: Int 
    get() { 
     visibility = View.VISIBLE 
     return visibility 
    } 

또는

val View.VISIBLE: View 
    get() = apply { visibility = View.VISIBLE } 
+1

네, 맞아요 이상 해요. 이것은 실제 시나리오가 아니며, 그냥 물건으로 장난을 치고 있었다. 감사 –

2

예,이 같은 게터과 extension property 속성을 작성할 수 있습니다 사용으로

val View.visible: View 
    get() = apply { visibility = View.VISIBLE } 

그러나

myView.visible 

을 유지 마음에 그 재산을 getter에서의 부작용은 일반적으로 권장되지 않으며 (Functions vs Properties 참조)이 동작은 속성에 다소 혼란 스럽습니다.