gpt4 book ai didi

Scala - 可变(var)方法参数引用

转载 作者:行者123 更新时间:2023-12-03 07:19:41 26 4
gpt4 key购买 nike

编辑:我在这里不断获得支持。只是为了记录,我认为这不再重要。自从我发布它以来我就不再需要它了。

我想在 Scala 中执行以下操作...

def save(srcPath: String, destPath: String) {
if (!destPath.endsWith('/'))
destPath += '/'
// do something
}

...但我不能,因为 destPath 是一个 val。有没有办法将 destPath 声明为 var?

注意:有类似的问题,但所有这些问题都只是想修改数组。

请勿提出以下建议:

Mutating the input parameters is often seen as bad style and makes it harder to reason about code.

我认为它在命令式编程中是有效的(Scala 两者都允许,对吧?)并且添加像 tmpDestPath 这样的东西只会增加困惑。

编辑:不要误解。我知道字符串不可变,并且我不想要引用的引用,因为我不想修改调用者的数据。我只想修改调用者用我的字符串给我的字符串的本地引用(例如 orig + '/')。我只想在当前方法的范围内修改该值。看,这在 Java 中是完全有效的:

void printPlusOne(int i) {
i++;
System.out.println("i is: " + i);
System.out.println("and now it's same: " + i);
}

我不必创建新变量,也不必计算 i+1 两次。

最佳答案

你不能。

您必须声明一个额外的var(或使用更实用的样式:-))。

简单的例子:

def save(srcPath: String, destPath: String) {
val normalizedDestPath =
if (destPath.endsWith('/')) destPath
else destPath + '/'
// do something with normalizedDestPath
}

关于Scala - 可变(var)方法参数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535821/

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