'2017/11/07'에 해당되는 글 2건

  1. 2017.11.07 SyntaxError: Non-ASCII character '\xec' in file 해결
  2. 2017.11.07 스칼라의 접근 한정자




SyntaxError: Non-ASCII character '\xec' in file oncall-bot.py on line 50, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


이 에러는 한글 때문에 발생한 것이다. mac에는 문제 없으나 linux에서 발생했다. 


code에 utf-8 인코딩 설정을 추가하니 더 이상 문제가 발생하지 않는다. 

# -*- coding: utf-8 -*- 


Posted by '김용환'
,


스칼라의 접근 한정자(access modifier)는 자바와 비슷하다. 그러나 하나 더 추가되는 내용이 있다. 


수식자(qualifier)를 사용해 스칼라의 접근 한정자가 확장될 수 있다. private[X] 또는 protected[X] 타입의 한정자는 각각 접근이 X까지 private 또는 protected임을 의미한다. 여기서 X는 패키지, 클래스, 싱글턴 오브젝트를 나타낸다.


다음 예를 살펴보자.



scala> :paste

// Entering paste mode (ctrl-D to finish)



package Country {

package Professional {

  class Executive {

    private[Professional] var jobTitle = "Engineer"

    private[Country] var friend = "Andrew Ng"

    protected[this] var option = "X"


    def getInfo(another : Executive) {

      println(another.jobTitle) // 동작한다

      println(another.friend) // 동작한다

      println(another.secret) //에러가 발생한다

      println(this.option) // 동작한다

    }

  }

}

}


  • jobTitle 변수는 Professional 패키지 내의 모든 클래스에서 접근할 수 있다.

  • friend 변수는 Country 패키지내의 모든 클래스에서 접근할 수 있다.

  • secret 변수는 인스턴스 메소드(this)의 암시(implicit) 오브젝트에만 접근할 수 있다.



Posted by '김용환'
,