Invalid array indexing before arguing variable

For example,
sheetnames(FullFilePath)
This will give me string array (e.g., 5x1).
So, I tried to access directly one of elements like below
sheetnames(FullFilePath)(1)
But, this did not work.
A = sheetnames(FullFilePath)
A(1)
However, after arguing variable, if I do the same approach, then I could access the element.
Why does this happen? what is the difference between first and second approach.
I thought both looks the same.

3 Comments

sheetnames is defined as as a function returning a string array.
You cannot directly use () or {} indexing on the return value from a function, so
sheetnames(FullFilePath)(1)
is invalid as that is trying to do () indexing on the return value of a function.
The only kind of indexing that you can do on the return value from a function is dot indexing
This is a limitation on the MATLAB parser .
There is some history behind it. Consider for example,
ones(2)
If you were permitted to directly index the result of a function call, you would not be able to tell whether ones(2) is a call to function ones with parameter 2, or if it is instead a call to function ones with no parameters, with the result to be indexed at (2) .
Coincidentally, @Walter Roberson, I just happened to be looking at your answer to the What is Missing from MATLAB? thread today. (That page takes forever to load now.)
@Walter Roberson I see. Thanks for your reply. Now it's clear to me. I'm curious about this.

Sign in to comment.

 Accepted Answer

More Answers (0)

Products

Release

R2023a

Asked:

on 1 May 2023

Answered:

on 2 May 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!