如何在朱莉娅创建一个集合?

时间:2013-08-08 21:30:32

标签: collections julia

这似乎是一个非常基本的问题,但无法找到答案。如何在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") ) )

但得到了错误

  

没有方法图(Function,EachLine)

3 个答案:

答案 0 :(得分:4)

你可以这样做:

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

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

答案 1 :(得分:4)

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

具体来说,Deques部分涵盖了1d Array类型(向量)支持的所有操作,包括push!pop!以及插入,调整大小,等

Omar的回答是正确的,我只会添加一个小资格:String[]创建一个{1}的1d数组。例如,可以使用相同的构造函数语法来创建StringInt[]或甚至Float[]向量。后一种类型可以容纳任何类型的对象。

答案 2 :(得分:4)

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