gpt4 book ai didi

julia - 如何创建一个接受任何可迭代字符串集合的方法?

转载 作者:行者123 更新时间:2023-12-03 15:51:38 24 4
gpt4 key购买 nike

我有一个功能,f .我想添加一个接受 String 的任何容器的方法s。例如,我想编写一个在需要时生成以下内容的方法:

f(xs::Array{String, 1}) = ...
f(xs::DataArray{String, 1}) = ...
f(xs::ITERABLE{String}) = ...

这可以在 Julia 的类型系统中实现吗?现在,我正在使用宏在需要时编写专门的方法。
@make_f(Array{String, 1})
@make_f(DataArray{String, 1})

这让事情保持干燥,但感觉......错了。

最佳答案

你不能只用鸭子打字吗?即,假设您正在为函数提供正确类型的对象,并在某些时候抛出错误,例如您的可迭代对象中没有字符串。

一旦您可以真正谈论使用特征的可迭代对象,这应该会有所改善;目前没有可迭代的类型。例如,斯科特的答案不适用于字符串元组,即使它是可迭代的。

例如。

julia> f(x) = string(x...)  # just concatenate the strings
f (generic function with 1 method)

julia> f(("a", "á"))
"aá"

julia> f(["a", "á"])
"aá"

julia> f(["a" "b"; "c" "d"]) # a matrix of strings!
"acbd"

关于julia - 如何创建一个接受任何可迭代字符串集合的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com