如何访问向量clojure向量中的特定元素

use*_*362 8 vector clojure

如果我将矢量定义为

(def matrix [[1 2 3][4 5 6]])
Run Code Online (Sandbox Code Playgroud)

如何在clojure中访问向量向量中的随机元素?我一直看到人们在网上说,在列表中使用向量的一个好处是你可以获得随机访问,而不必通过列表进行递归,但我无法找到允许我这样做的功能.我习惯于在c ++中我可以做矩阵[1] [1],它会返回第二个向量的第二个元素.

我不得不通过我的向量一次循环一个元素或者是否有更简单的方法来访问特定元素?

A. *_*ebb 14

向量是关联的,因此您可以使用get-in坐标来访问嵌套向量,例如矩阵.

(def matrix [[1 2 3] [4 5 6] [7 8 9]])

(get-in matrix [1 1])
;=> 5
Run Code Online (Sandbox Code Playgroud)

  • @ user1443362这是一个更好的答案. (2认同)

ber*_*eal 11

几乎就像你在C++中那样:

user=> (def matrix [[1 2 3][4 5 6]])
user=> (matrix 1)
[4 5 6]
user=> ((matrix 1) 1)
5
Run Code Online (Sandbox Code Playgroud)

正如文档所说:

向量实现IFn,用于一个参数的invoke(),它们假定它是一个索引,并且自己看起来好像是nth,即向量是它们索引的函数.

  • 你也可以使用:( get-in matrix [1 1]) (3认同)