3

这似乎是一个非常基本的问题,但找不到答案。如何在 Julia 中创建集合?例如,我想打开一个文本文件并解析每一行以创建一个(可迭代或其他)集合。显然我不知道提前有多少元素。

我可以像这样遍历这些行

I = each_line(open(fileName,"r"))
state = start(I)

while !done(I, state)
  (i, state) = next(I, state)

  println(i)
end

但我不知道如何将每个 i 放入数组或其他集合中。我试过

map( i -> println(i), each_line(open(fileName,"r") ) )

但是得到了错误

没有方法图(函数,每一行)

4

3 回答 3

4

你可以这样做:

lines = String[]
for line in each_line(open(fileName))
  push!(lines, line)
end

然后lines包含行列表。您需要String在第一行中使数组可扩展。

于 2013-08-09T01:09:53.090 回答
4

标准集合和支持的操作主要包含在标准库文档中。

具体来说,双端队列部分涵盖了 1dArray类型(向量)支持的所有操作,包括插入、调整大小等push!pop!

Omar 的回答是正确的,我将只添加一个小限定:String[]创建一个 s 的一维数组String。例如,可以使用相同的构造函数语法来创建Int[]Float[]或什至Any[]向量。后一种类型可以保存任何类型的对象。

于 2013-08-09T03:25:46.467 回答
4

根据您的 Julia 版本,您可能还可以编写collect(eachline(open("LICENSE.md")))[eachline(open("LICENSE.md"))...]. 我认为这些不适用于 0.1.x 版本,但可以在较新的 0.2 开发版本中使用(此时推荐使用 - 0.2 即将推出)。

于 2013-08-09T14:57:04.937 回答