Julia问题与getline()

时间:2016-09-01 16:42:53

标签: julia

要在执行阶段获取值,我使用了下面的getline()函数,但是当只获取一个值时,它以数组格式存储,这限制了我在将来的计算中使用该值。但是,它适用于多个输入值。

  getline(q=STDIN)= map(parse, split(readline(q)))
    q =getline(STDIN)

当我输入值 8 时,它会像数组格式一样存储为 [8] 。有人可以帮我将值存储为Int64格式吗?
注意:我在.jl文件中编写Julia代码,并通过include(file.jl)方法在REPL中使用它。

1 个答案:

答案 0 :(得分:1)

这样做的原因是无论你给出1还是> 1参数,都知道q总是成为一个数组。请参阅此处以获得更全面的解释:1-element Array to scalar in Julia

现在,您可以根据需要使用底线。

q = [8]
# If q is length one then q is the first element of q
(length(q) == 1) && (q = q[1])

更确定你甚至可以:

(length(q) == 1) && (q = Int64(q[1]))

@assert typeof(q) == Int64

编辑以反映评论: 这样split()具有最简单的行为,即它总是返回一个数组。当你分割一个字符串时,你事先并不知道你会得到多少个字段,所以最简单的事情就是为N个字段返回一个N值数组,无论N是什么。

如果返回了其他类型,则调用例如length(split(s))计算字段数可能会返回意外结果(如值/字符串本身的长度)。感谢@ Jeff Bezanson的解释