【发布时间】:2026-01-14 18:55:02
【问题描述】:
我想知道是否可以使用 冒号 ":" 作为函数的参数。
类似的东西:
function y=func(x)
if x is a colon
do this
else
do that
end
也可以将关键工作 end 作为函数的参数传递,也可以将 1:end、3:end-5 > 等等…… 我怀疑这是否可能,但我想确定一下。
另外,当我将“1:end”作为函数的参数传递时,我得到一个奇怪的错误,它不会产生错误,但在函数内部,没有分配任何参数(甚至没有分配其他参数)。有人知道会发生什么吗?
【问题讨论】:
-
我不确定您是否真的需要这样做。多说一点你想要达到的目标。您当然可以将冒号作为字符串
if x == ":" ...传递,end 可以通过使用 size 找到并作为数字传递。 -
是的,将它作为字符串传递将是一个很好的解决方法......好主意。
-
这就是调用重载运算符
()内部发生的情况:如果调用x(:),:将作为字符串':'进入subsref 或subsasgn。所以看起来很合理。使用ischar(x) && isequal(x, ':')而不是==。==将在大小差异上引发错误,并产生误报:==进行隐式类型转换,因此58 == ':'为真。