小编uni*_*eur的帖子

朱莉娅:将向量转换为以n为底的数字

我需要一个函数,将整数向量解释为具有一定基数的数字,如下所示:

vectonum([1,2,3,4], 10) #=> 1234
vectonum([0,0,0,1], 2) #=> 1
vectonum([1,1,1,1], 2) #=> 15
Run Code Online (Sandbox Code Playgroud)

以下函数可以完成此任务,但对我来说有点尴尬:

function vectonum(vector, base)
  result = 0
  vector = reverse(vector)
  for (idx, val) in enumerate(vector)
    val_ = val * base ^ (idx - 1)
    result += val * base ^ (idx - 1)
  end
  return result
end

Run Code Online (Sandbox Code Playgroud)

是否有更好的,更朱莉亚风格的方法来执行此操作,甚至可能是内置函数或模块?

提前致谢!

julia

3
推荐指数
1
解决办法
68
查看次数

Julia:函数参数——数组的类型规范

似乎我错过了关于多分派 + 参数类型的一些东西:

Integer 是所有整数类型的抽象超类型,因此该方法f(arg::Integer)按预期工作:

f(arg::Integer) = println("an integer")
# f(42) prints "an integer"
# f(UInt8(42)) prints "an integer"
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试将一维整数数组作为参数类型进行相同操作,则 julia 会回答一条错误消息:

f(arg::Array{Integer, 1}) = println("an array with integers")
f(arg::Array{Signed, 1}) = println("an array with signed integers")
# f([1,2,3]) gives "no method matching f(::Array{Int64,1})..."
Run Code Online (Sandbox Code Playgroud)

知道这里有什么问题吗?- 提前致谢!

arrays types arguments julia

2
推荐指数
1
解决办法
239
查看次数

标签 统计

julia ×2

arguments ×1

arrays ×1

types ×1