gpt4 book ai didi

Ruby 到 Scala 的代码转换

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:25 24 4
gpt4 key购买 nike

我正在将一些代码从 Ruby 转换为 Scala。问题是我一生中从未编写过 Ruby 程序。一切顺利,但现在我遇到了两行我不明白的地方。如何将最后 2 行 Ruby 代码转换为 Scala?

  num_obs = pop.first[:objectives].size
num_obs.times do |i|
min = pop.min{|x,y| x[:objectives][i]<=>y[:objectives][i]}
max = pop.max{|x,y| x[:objectives][i]<=>y[:objectives][i]}
/* do sth. with min and max */
end

pop 是 Vector[Map[String, Any]]

最佳答案

整体|x,y| f(x) <=> f(y)事情似乎只是比较xy通过一些属性(property)f , 和 <=>返回 -1, 0, 1 .如果不提供 compare,同样的事情可以更容易表达。具有返回值的方法 -1, 0, 1 ,我们简单地通过 f 进行比较.在 Scala 中,这类似于:

val pop: Vector[Map[String, Any]] = ???
val num_obs: Int = ???
for (i <- 0 until num_obs) {
val min = pop.minBy(_("objectives").asInstanceOf[Vector[Int]](i))
val max = pop.maxBy(_("objectives").asInstanceOf[Vector[Int]](i))
/* do sth. with min and max */
}

请注意,我已经替换了符号 :objectives通过字符串,即使 Scala 也有 Symbol -type(对应的符号为 'objectives )。我还假设 map 中的值类似于整数向量(否则使用 i 进行索引没有任何意义)。

关于Ruby 到 Scala 的代码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com