Finally there is no switch/case type statement here is there?
You might want to use IfElse to most closely approximate a switch/case statement:
IfElse(
IsEqual([Media Sub Type], TV Show), \/TV/\,
IsEqual([Media Sub Type], Movie, 0), /\Movies/\,
1, /\Other/\
)
i.e. I don't have to enclose the expression in a block of some kind to tell it "evaluate this expression, include the results" & I don't have to do anything special to concatenate strings.
That's correct. You can think of the expression language as a string-based, token/macro replacement language of sorts.
Taking that a step further, what if I want different paths for a TV Show vs a film? It doesn't seem like I can tell it the media subtype until after the rip completes which then means it is in the "wrong" place. Do I have to then manually go into library tools/move and sort it out or is there a setting I'm missing to set the subtype and then include an appropriate set of ifelse blocks in the rip path expression?
It depends on how you rip. If you use MC to do any ripping, you can set tags before the rip and these tags get carried forward to the physical files. (The tags you do pre-rip affect the normally hidden entry in the CD database; your ripped assets are in the Main database).