Есть ли способ, которым я могу переписать эту строку кода в Scala? - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь переписать эту строку Scala + Figaro, используя мою функцию sum_, но у меня есть некоторые ошибки.

val sum = Container(vars:_*).reduce(_+_)

Для вычисления суммы используется метод redu (). Я хочу переписать эту строку, но у меня есть ошибки из-за типа возвращаемого значения Chain [Double, Int]:

import com.cra.figaro.language._
import com.cra.figaro.library.atomic.continuous.Uniform
import com.cra.figaro.language.{Element, Chain, Apply}
import com.cra.figaro.library.collection.Container

object sum {  
  def sum_(arr: Int*) :Int={
    var i=0
    var sum: Int =0
    while (i < arr.length) {
      sum += arr(i)
      i += 1
    } 
    return sum     
  } 

  def fillarray(): Int = {
    scala.util.Random.nextInt(10) match{
      case 0 | 1 | 2 => 3
      case 3 | 4 | 5 | 6 => 4
      case _ => 5
    }
  }


  def main(args: Array[String]) {  
    val par = Array.fill(18)(fillarray())
    val skill = Uniform(0.0, 8.0/13.0)
    val shots = Array.tabulate(18)((hole: Int) => Chain(skill, (s:Double) =>
                                                 Select(s/8.0 -> (par(hole)-2),
                                                        s/2.0 -> (par(hole)-1),
                                                        s -> par(hole),
                                                        (4.0/5.0) * (1.0 - (13.0 * s)/8.0)-> (par(hole)+1),                                                       
                                                        (1.0/5.0) * (1.0 - (13.0 * s)/8.0) -> (par(hole)+2)))) 

    val vars = for { i <- 0 until 18} yield shots(i)

    //this line I want to rewrite
    val sum1 = Container(vars:_*).reduce(_+_)

    //My idea was to implement in this way the line above
    val sum2 = sum_(vars)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...