我想学习如何编写 for 循环函数,而无需在代码的前面声明“var”。例如,我想删除整数数组中的重复项。在 C++/Java 中,我可以这样做:
int removeDuplicate(vector<int> nums)
{
vector<int> output
Map<int,int> counter;
for(i = 0; i < nums.size(); i++)
{
if(!counter.has_key(nums[i]))
{
counter[nums[i]]=1; //add new key-value pair
output.push_back(nums[i]);
}
}
return output;
}
但是在scala中,如何使用不可变变量来完成上述任务。
不要使用scala的内部函数,例如
distinct
.这个问题是关于 Scala 实现的。
最佳答案
在 Scala 中,为了避免在这种情况下使用 vars,您可以使用递归或 foldLeft 或 foldRight:
def distinct[A](list:List[A]):List[A] =
list.foldLeft(List[A]()) {
case (acc, item) if acc.contains(item) => acc
case (acc, item) => item::acc
}
关于Scala 删除数组中重复项的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126243/