gpt4 book ai didi

scala - 在 Scala 中,允许参数隐藏背后的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 18:18:55 26 4
gpt4 key购买 nike

编译器完全可以接受(至少在 2.10.3 和 2.11-M7 中):

def foo(n: Int) = {
val n = 3
n * 3
}

...这可能是因为参数存在于方法/函数体的外部范围内,这是技术推理,但实际上,这可能会导致问题(正如我刚刚在现实生活中的代码中发现的那样),所以我想知道这是否只是语言设计的一个不可避免的结果,或者它是否真的服务于真正的(更高?)目的。

附言甚至可以为阴影名称使用不同的类型:

def foo(n: Int) = {
val n = "hello"
n * 3
}

注意:一个现有的问题提出了一个类似但在概念上仍然非常不同的问题:Why does Scala support shadow variables? ——有人问一般的名字遮蔽,而我关心的是遮蔽(出乎意料地)也发生在参数上,没有明显的子范围——是的,有大括号,但仍然有一个(可以说是) 假定参数在同一范围内。

编辑:Haskell,范例或 FP 语言,也允许这样做:foo x = let x = 4 in x 是完全合法的。

最佳答案

有时语言包含特性并不是因为它们被认为是好的和有用的,而是因为根本没有人考虑过。

关于scala - 在 Scala 中,允许参数隐藏背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580309/

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