No Scala, vejo esse recurso como variável privada do objeto. Com meu conhecimento não muito rico em Java, aprendi a fechar tudo (torná-lo privado) e abrir (fornecer acessadores) se necessário. Scala apresenta um modificador de acesso ainda mais restrito. Devo sempre usá-lo por padrão? Ou devo usá-lo apenas em alguns casos específicos em que preciso restringir explicitamente a alteração do valor do campo, mesmo para objetos da mesma classe? Em outras palavras, como devo escolher entre
class Dummy {
private var name = "default name"
}
class Dummy {
private[this] var name = "default name"
}
O segundo é mais rígido e gosto dele, mas devo usá-lo sempre ou apenas se tiver um motivo forte?
EDITADO: Como vejo aqui private[this] é apenas um subcaso e em vez de thisposso usar outros modificadores: "pacote, classe ou objeto singleton". Então, vou deixar para algum caso especial.