元组

元组是一种 ReScript 特有的数据结构,在 JavaScript 中不存在。它们是:

  • 不可变的

  • 有序的

  • 在创建时固定大小

  • 异构的(可以包含不同类型的值)

ReScriptJS Output
let ageAndName = (24, "Lil' ReScript")
let my3dCoordinates = (20.0, 30.5, 100.0)

元组的类型也可以在类型标注中使用,元组类型看起来和元组值很像。

ReScriptJS Output
let ageAndName: (int, string) = (24, "Lil' ReScript")
// a tuple type alias
type coord3d = (float, float, float)
let my3dCoordinates: coord3d = (20.0, 30.5, 100.0)

注意:没有大小为 1 的元组,你只需使用值本身。

使用

要获取元组的特定成员,可以对元组进行解构:

ReScriptJS Output
let (_, y, _) = my3dCoordinates // now you've retrieved y

_ 意味着你要忽略元组中的指定成员。

元组无法通过修改来更新,你可以通过解构旧的元组来创建新的元组:

ReScriptJS Output
let coordinates1 = (10, 20, 30)
let (c1x, _, _) = coordinates1
let coordinates2 = (c1x + 50, 20, 30)

技巧和诀窍

你可以在方便的情况下使用元组,随意传递多个值。例如,返回多个值:

ReScriptJS Output
let getCenterCoordinates = () => {
  let x = doSomeOperationsHere()
  let y = doSomeMoreOperationsHere()
  (x, y)
}

尽量局部地使用元组,对于那些长期存在并经常需要传递的数据结构,最好使用记录(record),它有命名的字段。