Julia 使用joinpath()将特定字符串插入较长的字符串-类似于R paste()

Julia 使用joinpath()将特定字符串插入较长的字符串-类似于R paste(),julia,Julia,好的,这在0.7中有效 tickers = ["IWB","IWP","IVV","IYY","IEV","EEM","TLT"] t=1 res = joinpath("https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY_ADJUSTED&symbol="tickers[t]"&outputsize=full&apikey=your_key&datatype=csv") 语法:不能并置字

好的,这在0.7中有效

tickers = ["IWB","IWP","IVV","IYY","IEV","EEM","TLT"]
t=1
res = joinpath("https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY_ADJUSTED&symbol="tickers[t]"&outputsize=full&apikey=your_key&datatype=csv")
语法:不能并置字符串文字

v1.1中做了哪些更改,或者可能有人建议以其他方式将tickers[t]的内容插入上面的路径


R在
julia
中有
paste()
joinpath()
是我的替代品

这在v0.7中肯定不起作用(我刚刚检查过)

表单的任何代码模式:

"abc"d"efg"
将抛出相同的错误,因为Julia正在尝试从
d“efg”
构造字符串文字对象,然后将其与字符串
“abc”
并置。这里需要的操作是字符串插值,例如:

ticker = "ABC"
res = "https://somepath/symbol=$(ticker)&morestuff"
当然,您也可以使用:

ticker = "ABC"
res = string("https://somepath/symbol=", ticker, "&morestuff")
我相信在某些情况下,直接调用
string
会更有效。但是@DNF建议(在注释中)两种方法现在都降低到相同的代码,所以使用您喜欢的语法。我个人认为插值代码语法更干净。在您正在执行的操作(请求股票数据)的上下文中,效率差异无论如何都是没有意义的


我真的不知道你为什么在这里尝试使用
joinpath
,因为
joinpath
用于为当前操作系统构建文件/目录地址。使用
joinpath
构建URL字符串不是一个好主意,因为在Windows操作系统上,
joinpath
将使用
\
,而不是
/
。即使是允许您指定加入时使用的分隔符的
join
,在这里也没有意义,因为您不希望在股票代码的两侧都有斜杠。

这在v0.7中肯定不起作用(我刚刚检查过)

表单的任何代码模式:

"abc"d"efg"
将抛出相同的错误,因为Julia正在尝试从
d“efg”
构造字符串文字对象,然后将其与字符串
“abc”
并置。这里需要的操作是字符串插值,例如:

ticker = "ABC"
res = "https://somepath/symbol=$(ticker)&morestuff"
当然,您也可以使用:

ticker = "ABC"
res = string("https://somepath/symbol=", ticker, "&morestuff")
我相信在某些情况下,直接调用
string
会更有效。但是@DNF建议(在注释中)两种方法现在都降低到相同的代码,所以使用您喜欢的语法。我个人认为插值代码语法更干净。在您正在执行的操作(请求股票数据)的上下文中,效率差异无论如何都是没有意义的


我真的不知道你为什么在这里尝试使用
joinpath
,因为
joinpath
用于为当前操作系统构建文件/目录地址。使用
joinpath
构建URL字符串不是一个好主意,因为在Windows操作系统上,
joinpath
将使用
\
,而不是
/
。即使是允许您指定加入时使用的分隔符的
join
,在这里也没有意义,因为您不希望在股票代码的两边都有斜杠。

据我所知,插值语法降低到调用
string
,所以性能应该是相同的。@DNF我必须承认,我是从Stefan的模糊记忆中说起的,他在讨论一些情况,其中插值从一个至少有一年历史的线程开始变慢了。。。现在找不到。我将调整答案以反映这一点。我相信您是对的,字符串插值不是最快的,但您可能会想到像
println(“foo$bar baz”)
vs
println(“foo”,bar,“baz”)
。使用
IOBuffer
可以更快地构造字符串,但我没有这方面的经验。据我所知,插值语法降低到调用
string
,因此性能应该是相同的。@DNF我必须承认,我是从Stefan的模糊记忆中说起的,他在讨论一些情况,其中插值从一个至少有一年历史的线程开始变慢了。。。现在找不到。我将调整答案以反映这一点。我相信您是对的,字符串插值不是最快的,但您可能会想到像
println(“foo$bar baz”)
vs
println(“foo”,bar,“baz”)
。使用
IOBuffer
可以更快地构造字符串,但我没有这方面的经验。