gpt4 book ai didi

scala - 一切都是scala中的函数,表达式或对象吗?

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

我很困惑。

我以为一切都是表达,因为该语句返回一个值。但是我也听说一切都是scala中的对象。

现实中是什么?为什么scala选择以一种或另一种方式来做到这一点?这对Scala开发人员意味着什么?

最佳答案

I thought everything is expression because the statement returns a value.



有些东西没有值(value),但在大多数情况下,这是正确的。这意味着我们可以从根本上删除Scala中“语句”和“表达式”之间的区别。

但是,术语“返回值”不太合适。我们说一切都“评估”成一个值。

But I also heard that everything is an object in scala.



这一点与前面的声明完全没有矛盾:)只是意味着每个可能的值都是一个对象(因此每个表达式都求值一个对象)。顺便说一下,作为Scala中的一等公民的功能也是对象。

Why did scala choose to do it one way or the other?



必须注意的是,这实际上是Java方式的一种概括,其中语句和表达式是不同的事物,而不是所有事物都是对象。您可以在无需大量修改的情况下将每段Java代码转换为Scala,但反之则不行。因此,此设计决策使Scala在简洁性和表达性方面实际上更强大。

What does that mean to a scala developer?



例如,这意味着:
  • 您通常不需要return,因为您可以将返回值作为最后一个表达式放在
  • 方法中
  • 您可以利用ifcase是表达式来简化代码的事实

  • 一个例子是:
    def mymethod(x: Int) = if (x > 2) "yay!" else "too low!"

    // ...
    println(mymethod(10)) // => prints "yay!"
    println(mymethod(0)) // => prints "too low!"

    我们还可以将此类复合表达式的值分配给变量:
    val str = value match {
    case Some(x) => "Result: " + x
    case None => "Error!"
    }

    关于scala - 一切都是scala中的函数,表达式或对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022408/

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