代码中的分号;的作用

Julia代码中的分号;和matlab中有什么区别?为什么如下代码,不能在循环中输出所有的c[i]?最后一个c[4]也没输出。加不加;的区别在哪呢?

c = zeros(4,1)
for i in 1:4
    c[i] = i
end
1 个赞

可以通过@show c[i]=i实现你的需求

谢谢,那分号有什么妙用吗?

我也不知道,只是发现在运行脚本时如果没有分号会输出最后一行代码的结果,我记得有分号是就不会:joy:

是这样的。那么,非最后一行的代码,加不加分号是不是就没区别了?

如果是这样的话,分号只管最后一行的代码是否显示结果,那么分号的功能好弱啊!

那么,按照Julia官方的设计理念和规范,通常写代码的时候,句末应该加分号还是应该不加?

等待大佬解答 :thinking:

欢迎在社区发帖交流,也请遵循社区交流规范。

交流前建议先思考:为什么提这个问题,是为了做什么,解决什么,以及避免钻牛角尖。

国外stack等论坛,通常还要求写上:自己做了哪些尝试,搜索,而不是单纯的伸手党。毕竟回答者只是语言爱好者,解答不是义务 :stuck_out_tongue_winking_eye:

还有,非常推荐这两篇短文:

1 个赞

谢谢!受教了!推荐的两篇短文也非常好,有时间好好学习 :pray:

在 REPL 或者代码块最后一行,分号作用是抑制输出。
不加分号的情况:

## block
a = 1 # 非最后一行,不影响
b = a + 1

输出结果
image

for 循环返回值是 nothing,后边自然不会有输出。

分号另一个作用是替代换行符,比如

a = 1; b = a + 1
struct Point2D;x;y end # 第一个分号增加可读性

这些用着用着就懂了,一开始不清楚也不影响使用,可以学习别人代码怎么用,自己琢磨。


最近看 Indigo 写的一行很有意思的代码,分号能用来打开 UnitRange,虽然不清楚原理
image

3 个赞

多谢了!!非常清楚和详细,谢谢!:pray: