相关疑难解决方法(0)

Dart Fold vs Reduce

Dart中foldreduce之间的区别是什么?我何时使用one而不是另一个?根据文档,他们似乎做同样的事情.

通过使用提供的函数迭代地将集合的每个元素与现有值组合,将集合缩减为单个值.

dart

23
推荐指数
2
解决办法
5912
查看次数

掌握不可变数据结构

我正在学习斯卡拉,作为一名优秀的学生,我试图遵守我发现的所有规则.

一条规则是:不可靠性!

所以我试图使用不可变数据结构和val来编写所有代码,有时候这很难.

但今天我想到了自己:唯一重要的是对象/类应该没有可变状态.我不是被迫以不可变的样式编写所有方法,因为这些方法不会相互影响.

我的问题:我是否正确或有任何问题/缺点我看不到

编辑:

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
}  
Run Code Online (Sandbox Code Playgroud)

说明:这是一种计算变量阶齐次马尔可夫模型的对数似然的方法.state的apply方法获取所有先前的符号和即将到来的符号,并返回这样做的概率.

正如您所看到的:整个方法只是增加了一些使用变量更容易的概率.

functional-programming scala immutability data-structures

19
推荐指数
2
解决办法
3507
查看次数