Basically,
and
The first one can take inputs, the second one can't.
The first one can be any expression, the second one can't.
the difference between a command ring and a C-slot is that the C-slot is better suited for longer block stacks, and that you can't write formal parameters in the C-slot.
the second one can. You can drop a reporter in the c-shape (in custom blocks, not primitives).
There's a pedagogic difference: The command ring makes explicit the fact that what's inside it is a reified script. (That's true for a C-shaped slot, too, but they don't rub your nose in it.) But the C-shaped slot has a meaning that's instantly obvious to new users (one of the brilliant pieces of the Scratch visual design).
Since primitives with C-slots don't let you drop a variable onto the slot (a misfeature imho but never mind...), we have to use a command ring in the RUN block and friends (e.g. TELL) because it's more common to want to use a variable as the argument than to have an explicit script. (Well, definitely more common for RUN. For TELL I don't know which is more common, but at least using a variable is pretty common.)
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.