【问题标题】:"true && E" returns "E" in Scala?“true && E”在 Scala 中返回“E”?
【发布时间】:2013-10-05 23:24:32
【问题描述】:

在 Coursera 的 Scala 课程中(讲座 1.4,大约 3 分钟),Martin Odersky 说表达式 true && e 总是返回 e(e 是任何物体)。并且表达式false || e 也返回e。他解释说,有时并不总是评估最后一个表达式。

但是当我运行这些表达式时,我得到了error: type mismatch。 对于true && 5,我得到found: Int(5); required: Boolean

Scala 最近有没有发展,或者我做错了什么?

【问题讨论】:

    标签: scala


    【解决方案1】:

    e 代表布尔表达式

    Predicate: a boolean expression to be evaluated e.g. (x >= 4), (x != 0), etc
    

    https://sites.google.com/a/stonybrook.edu/functional-programming-scala/lecture-1-4


    来自Scala Reference book,第 6.16 段 条件表达式,给出:

    if (e1) e2 else e3
    

    条件 e1 应符合布尔类型。当时的部分 e2 和 else-part e3 都应该符合预期 条件表达式的类型。条件类型 表达式是 e2 类型的弱最小上界(§3.5.3) 和 e3。

    【讨论】:

    • 好吧,奥德斯基说e可以是任何对象
    • @Graduate:来源,请。
    • 讲座 1.4,约 3 分钟
    • @Graduate: e 不是任何对象,是结果类型为Boolean 的任何表达式,例如{println("text"); 1 == 2}
    猜你喜欢
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多