julia - 为什么要复合表达式?

标签 julia

这是我正在阅读的书中的一个例子:

volume = begin
    len = 10
    breadth = 20
    height = 30
    len * breadth * height
end

为什么我需要复合表达式?我可以写volume = 10 * 20 * 30volume = len * breadth * height或为此编写一个函数或一个匿名函数......

为什么我使用 beginend ?或者可能更好的问题:我是否使用它们,因为我猜上面的例子可能不是很好。

最佳答案

概括其他人所说的: block 允许您将语句列表(没有值的句法“短语”,即无法分配)转换为一个表达式(表示值并且可以分配的“短语” )。

例如,虽然你不应该,但你可以写

x = begin
    s = 0
    for i = 1:10
        s += i^2
    end
    s
end

分配x循环操作的结果。 (限制序列中的最后一个语句实际上必须是一个表达式——否则,你将没有表达式的值。)

一个合法的用例是生成的代码。例如,您可能会转
x = @somthing bla blub

进入
x = begin
   (stuff involving bla and blub)
end

对用户透明,而 @something可以自由生成任何语言结构。

或者,如果您想编写一个主体较长的匿名函数(而不是使用 function 形式):
f = x -> begin
   ...
end

关于julia - 为什么要复合表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60578596/

相关文章:

multithreading - Julia @everywhere 变量

julia - 使用可选的位置参数定义 Julia 函数

TensorFlow、Julia - 张量和 float

Python 与 Julia 速度比较

matlab - Julia 相当于 MATLAB 的 `sym` ?

arrays - 在数组内移动数组元素

julia - 如何从 Julia 中的 XLSX 获取文件名

julia - 在 Julia 中索引数组时避免内存分配

julia - 使用宏避免在 Julia 中输入

dictionary - 返回常量字典