如何在julia中将对象数组传递给函数?

bit*_*ise 4 julia

我想将对象数组传递给函数,并返回另一个相同大小的数组。我该怎么办?代码应该是如此之快。例如,考虑以下代码:

struct triangle
    height::Float64
    base::Float64
end

function area(height::Float64, base::Float64)
    return 0.5*base*height
end
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数,该函数返回三角形数组的面积。最快的方法是什么?

Nil*_*dat 9

您可以为此使用Julia的广播语法。考虑:

struct Triangle # Note: Julia convention is to capitalize types
    height::Float64
    base::Float64
end

# Define an area method for the Triangle type
area(t::Triangle) = 0.5 * t.height * t.base

# Create an area of random triangles
triangle_array = [Triangle(rand(), rand()) for _ in 1:10]

# Now we can use dot syntax to broadcast our area function over the array of triangles
area.(triangle_array)
Run Code Online (Sandbox Code Playgroud)

请注意,这与您的代码不同,它Triangle在调用area函数时直接使用对象进行分派。area然后,该函数不接受heightbase参数,而仅接受单个Triangle对象并访问其heightbase字段(t.heightt.base)。