关键字do的使用疑惑

关键字do是创建匿名函数的,如
map(1:10) do x
2x
end
等于
map(x->2x, 1:10)
do 后面的x为匿名函数的变量,此时do类似于关键字lambda
但是在输入输出中:
open(“myfile.txt”, “w”) do f
write(f,“test”)
end
为什么f又等价于
f=open(“myfile.txt”, “w”)

它实际上是等价于 open(f->write(f,"test"), "myfile.txt", "w")

明白了,原来open还有这个用法
open(f::Function, args…; kwargs…)
感谢感谢!