2017-12-21 18 views
-1

개체에 데이터 집합이 있습니다. 나는 값을 바꿀 수는 있지만, 이처럼 나는 항상 오래된지도를 얻는다. 각 변경된 값을 가져 오는 함수의 변수

var partnerURLs=getPartnerURLs() 

    def getPartnerURLs(): mutable.Map[String, List[String]] ={ 
    val sql = "select * from table where status_flag=1 and del_flag=0" 
    val resultSet = DBUtils.doMapResult(sql) 
    var result = new scala.collection.mutable.HashMap[String, List[String]]() 
    resultSet.foreach(rows => { 
     val row = rows.asInstanceOf[util.HashMap[String, Any]] 
     result += (row.get("uname").toString -> row.get("urls").toString.split(",").toList) 
    }) 
    result 
    } 

나는 데이터베이스를 업데이트하는 경우

partnerURLS은 항상 이전 값을 가지고, 변경할 수 없습니다. 이 방법은 괜찮습니다. 최신 값을 얻을 수 있습니다.이 변수를 원합니다. partnerURLs 최신 값을 얻는 방법은 무엇입니까?

내가 뭘 잘못하고있어?

+0

데이터베이스를 업데이트한다는 것은 무엇을 의미합니까? getPartnerURLs 메서드가 데이터베이스에서 최신 업데이트를 가져 오지 않는다고 말하는 것입니까? – sparkr

+0

이 방법은 괜찮습니다. 최신 값을 얻을 수 있습니다.이 변수 partnerURLs가 최신 값을 얻는 방법이라고 생각하십니까? – lemanli

+0

수업과 객체 및 그 작동 원리를 이해합니까? 그렇다면 글로벌 변수 partnerURL이 최신 값을 반영하지 않는 이유를 알아야합니다. 기본 사항을 먼저 이해하십시오! – sparkr

답변

0
var partnerURLs = getPartnerURLs() 

이 변수는 사용자의 문제입니다. 둘러싸는 클래스 또는 객체로 전역 적으로 선언 된 경우에는 한 번만 초기화됩니다!

또한 가변 상태를 사용하지 마세요. Scala와 Functional programming에 대해 약간의 존중을 표하십시오!

+0

내 문제는, 나는 스칼라가 변수에 함수를 넘겨 준다고 생각한다. 참조 호출이 아니라 초기화 된 값이다. 어떻게 변수에 함수를 정의 할 수 있으며, 모든 호출이 런타임에 값을 얻을 수있다. – lemanli