我想将对象数组传递给函数,并返回另一个相同大小的数组。我该怎么办?代码应该是如此之快。例如,考虑以下代码:
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)
我想定义一个函数,该函数返回三角形数组的面积。最快的方法是什么?
您可以为此使用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然后,该函数不接受height和base参数,而仅接受单个Triangle对象并访问其height和base字段(t.height和t.base)。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |