def random[T](array: Array[(T, Double)]): T = {
var total: Double = 0
array.foreach(x => total += x._2)
if (total > 1)
throw new IllegalArgumentException("The total ratio shouldn't greater than 1.")
val ratio = rand.nextDouble()
var min: Double = 0
var max: Double = 0
var theOne:T = null // error here !!!
array.foreach {
x =>
max += x._2
if (ratio > min && ratio <= max)
theOne = x._1
min += x._2
}
theOne
}
如何避免此問題?scala只有類可以聲明但不確定的成員
解決這個最簡單的方法是做'null.asInstanceOf [T]'。如果你想得到更好的答案(即描述如何改進你的代碼真的很難看的答案),你應該描述你想要做的事情。目前你的代碼沒什麼意義,因爲比例> min'永遠不會是真的,但是對於第一個元素。 – sschaef
謝謝!你是對的,這真的很醜。 :) –