Uma compreensão de estruturas de dados imutáveis
Estou aprendendo scala e, como bom aluno, tento obedecer a todas as regras que encontrei.
Uma regra é: IMUBILIDADE !!!
ntão tentei codificar tudo com estruturas de dados imutáveis e vals, e às vezes isso é realmente difíci
Mas hoje eu pensei comigo: a única coisa importante é que o objeto / classe não deve ter estado mutável. Não sou obrigado a codificar todos os métodos em um estilo imutável, porque esses métodos não se afeta
Minha pergunta: Estou corrigindo ou existem problemas / desvantagens que não vejo?
EDITAR
xemplo de código para aishwarya:
def logLikelihood(seq: Iterator[T]): Double = {
val sequence = seq.toList
val stateSequence = (0 to order).toList.padTo(sequence.length,order)
val seqPos = sequence.zipWithIndex
def probOfSymbAtPos(symb: T, pos: Int) : Double = {
val state = states(stateSequence(pos))
M.log(state( seqPos.map( _._1 ).slice(0, pos).takeRight(order), symb))
}
val probs = seqPos.map( i => probOfSymbAtPos(i._1,i._2) )
probs.sum
}
Explication: É um método para calcular a probabilidade logarítmica de um modelo homogêneo de Markov de ordem variável. O método de estado apply pega todos os símbolos anteriores e o próximo símbolo e retorna a probabilidade de fazê-l
omo você pode ver: todo o método está apenas multiplicando algumas probabilidades que seriam muito mais fáceis usando var