MatLab/Octave函数体中是否有分号? [英] semicolons or not in Matlab / Octave function bodies?

查看:0
本文介绍了MatLab/Octave函数体中是否有分号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑Octave/MatLab中的以下两个函数;它们之间唯一的区别是Body中的行是否以分号结尾:

function [a, b, c] = fooNoSemicolons (x, y, z)
  a = x * 42
  b = y + 42
  c = (x * y) / (z * 42)
endfunction

function [a, b, c] = fooSemicolons (x, y, z)
  a = x * 42;
  b = y + 42;
  c = (x * y) / (z * 42);
endfunction

现在考虑以下调用及其输出:

fprintf ("no semicolons: 
"); disp (fooNoSemicolons (12, 13, 14));
fprintf ("done
");
fprintf ("semicolons:    
"); disp (fooSemicolons (12, 13, 14));
fprintf ("done
");
no semicolons:
a =  504
b =  55
c =  0.26531
 504
done
semicolons:
 504
done
显然,这两个函数生成相同的结果,即a的值,即504,但我不太清楚其中是否存在语义上的不同。

我还找不到关于MatLab/Octave中分号含义的文档,但我又做了几个实验,但没有提供太多信息:

fprintf ("noSemicolons: 
");
[someA, someB, someC] = fooNoSemicolons (12, 13, 14);
fprintf ("done
"); 
disp ([someA, someB, someC]);

fprintf ("semicolons:
");
[moreA, moreB, moreC] = fooSemicolons (12, 13, 14);
fprintf ("done
");
disp ([moreA, moreB, moreC]);

fprintf ("noSemicolons: 
");
otherStuff = fooNoSemicolons (12, 13, 14);
% otherStuff apparently does not get bound to an array or vector!
disp (otherStuff);
fprintf ("done
"); 

fprintf ("semicolons:
");
moreStuff  = fooSemicolons (12, 13, 14);
% moreStuff apparently does not get bound to an array or vector!
fprintf ("done
"); 
disp (moreStuff);
noSemicolons:
a =  504
b =  55
c =  0.26531
done
   504.00000    55.00000     0.26531
semicolons:
done
   504.00000    55.00000     0.26531
noSemicolons:
a =  504
b =  55
c =  0.26531
 504
done
semicolons:
done
 504

推荐答案

在MatLab/Octave代码行尾放置分号可防止控制台打印答案/变量赋值/其他内容。

x=5

将x设置为5并打印x的值。

x=5;

将x设置为5。

这篇关于MatLab/Octave函数体中是否有分号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆