gpt4 book ai didi

scala - 为什么 Scala 没有 decltype?

转载 作者:行者123 更新时间:2023-12-04 21:13:48 26 4
gpt4 key购买 nike

有时可能想声明 xy 的类型相同.与 vals类型推断可以很好地处理这个问题,但这在其他一些领域不起作用,例如 with function types .

对于具有一些 C++ 经验的程序员来说,一个显而易见的解决方案是 decltype .当前的 Scala 中似乎没有这样的设施。

对链接问题的回答说明:

because types are not first class citizens



我不得不承认我不明白这一点。我不认为类型是 C++ 中的一等公民,但它仍然可以拥有 decltype .我不是在问诸如 decltype 之类的事情对于泛型中的类型参数或类似的东西(我知道泛型不是模板,类型在其中被删除)。尽管如此,我认为一个允许我在需要类型的地方使用表达式类型的运算符 - 当然编译器必须能够评估表达式类型,否则 val 的类型推断定义是不可能的。

一个 decltype可以像下面这样使用 - 代码没有尝试做任何有用的事情,只是为了说明语法和基本用法:
case class A(x:Int = 0)

val a = new A(10)
val b = new decltype(a)

def f(c:decltype(a)) : decltype(a.x+a.x)

是否缺席 decltype一个深思熟虑的决定,还是有一些特定的原因为什么 Scala 不能拥有它?也许有一些使用编译时反射的解决方案可以实现这一点?

最佳答案

我的第一刺:

class Decl[T] { type Type = T }
object Decl { def apply[T](x: T) = new Decl[T] }

例如,如果我们有一些变量 x我们不想明确说明其类型:
val d = Decl(x)
type TypeOfX = d.Type

关于scala - 为什么 Scala 没有 decltype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038214/

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