• Scala 踩坑系列


    scala List

    scala list 如果使用
    list(i)的形式进行遍历,如果list数据太多,每次遍历耗时会很久。

    因为有一个 head tail 的概念 。

    和java的List根据角标去获取值不同。

    equals & eq & sameElement

    Equals 方法

    equals 方法用于测试值的相等,也就是说,如果 obj1 和 obj2 有 相同 的值, obj1 equals obj2 为 true。 obj1 和 obj2 不需要指向同一个实例。

    == 和 != 方法

    == 的行为与 equals 完全一样,即只测试值是否相等。当 null 在 == 左边时是个
    例外:

    p1a == null // = false
    
    null == p1a  // = false
    null == null // = true (编译警告,这永远为true)
    

    eq 和 ne 方法

    eq 方法用于测试引用的相等性。也就是说,如果 obj1obj2 指向内存中的同一个位置,
    obj1 eq obj2 就为 true。这两个方法只对 AnyRef 类型有定义:

    p1a eq p1a // = true 
    p1a eq p1b // = false
    p1a eq p2  // = false
    p1a eq null // = false
    null eq p1a // = false
    null eq null // = true
    

    ne 方法与 eq 的相反,也就是说它与 !(obj1 eq obj2) 等价

    数组相等和 sameElements 方法

    比较两个数组,在 Scala 中并不能得出我们认为的显而易见的结果:

    Array(1, 2) == Array(1, 2)  // = false
    
    Array(1, 2) sameElements Array(1, 2) // = true
    

    实际上,我们最好要记住, Array 是我们熟知和喜爱的,它是可变的原始 Java 数组,与
    Scala 库中我们习惯使用的集合类型有着不同的方法。

    与数组相反,序列(比如 List )的相等性的行为就符合你的期望:

    List(1, 2) == List(1, 2)  // = true
    List(1, 2) sameElements List(1, 2) // = true
    
  • 相关阅读:
    python 面向对象(三大特性)
    python 发红包
    python 计算器
    python 模块和包
    python 异常处理
    python 序列化模块
    python 常用模块
    esriSRGeoCS3Type Constants
    esriSRGeoCS2Type Constants
    esriSRGeoCSType Constants
  • 原文地址:https://www.cnblogs.com/leihuazhe/p/11214272.html
Copyright © 2020-2023  润新知