null
으로 변수를 인스턴스화하지 않고 대신 Option
을 사용하여 많은 스칼라 코드를 변경했습니다. 예를 들어 이전에 다음과 같이 입력했습니다.스칼라 작업 옵션
var cxn: RepositoryConnection = null
cxn = repo.getConnection()
//do something with the connection, then close it
cxn.close()
이제 내 코드는 다음과 같이 보입니다.
var cxn = None : Option[RepositoryConnection]
cxn = Some(repo.getConnection())
//do something with the connection, then close it
이제는 RepositoryConnection 유형과 연결된 메소드를 호출하려고 할 때의 문제가 있습니다. cxn
는 RepositoryConnection
객체가 아닌 Option[RepositoryConnection]
때문에, 내가 null
를 사용하여 때
value close is not a member of Option[org.openrdf.repository.RepositoryConnection]
지금,이 작업이 잘 작동 : 나는 시도 :
cxn.close()
이 오류를 참조하십시오. Option
을 사용하고 있는데 close()
메서드를 호출하는 쉬운 방법이 있습니까?
를 볼 처리하는 방법에 따라 시도 할 수 있습니다 = repo.getConnection()'이 경우? 진짜 문제는 var를 사용하고 null/None으로 설정 한 다음 나중에 실제 값을 넣는 것입니다. 'Option'을 사용하면이 점이 향상되지 않습니다. – puhlen
그 이유는 내 코드의 설계로 인해 cxn이 전역 변수가되어야하고 나중까지 설정되지 않기 때문입니다. 사실 repo 객체는 cxn이 초기화 될 때 아직 생성되지 않았으며, 나는 이것이 내가 작업하고있는 기술 때문에 필요하다고 생각한다. – hayfreed
옵션을 원하지 않는다면 문제에 대한 설명으로 게으른 발을 원하게됩니다. – pedrofurla