Re:PowerShell is open sourced and is available on Linux
by emodendroket on Thursday August 18, 2016 @12:37PM
(#12314003)
Not if you're in a script and declaring a function. So, no, it's a source of confusing bugs. Implicit return works better in, like, Ruby, where it has to be at the end and can't just randomly exit in the middle of a function declaration.
[ Parent
| on HN ]
Re:PowerShell is open sourced and is available on Linux
by new_hackers on Thursday August 18, 2016 @12:39PM
(#12314021)
ArrayList.Add ... whatever ... | Out-Null
Its not implicitly returning. The return value wasn't assigned so it is emitted to the pipeline.
Re:PowerShell is open sourced and is available on Linux
by emodendroket on Thursday August 18, 2016 @12:50PM
(#12314134)
OK, sorry (there is an explicit "return" keyword that I thought worked the same way). Either way, yes, I know you can avoid it by piping to Out-Null, but that behavior is surprising.
Re:PowerShell is open sourced and is available on Linux
by ygra on Thursday August 18, 2016 @02:11PM
(#12314973)
return {expression}
is equivalent to {expression}
return
the only place you have an exit from a function, script block or similar is either at the end or at a return statement. Every value that isn't assigned or piped into nirvana gets pushed to the pipeline. I actually can't remember having used return statements more often than once or twice so far (and I use PowerShell daily, heavily).Then I rarely found the need to use ArrayList. Sure, you can use it, but you can just as well do
$array = @()
$array += $item
A personal pet peeve of mine is actually that lots of people write PowerShell very similar to equivalent VBScript or C# code. And that makes for horrible PowerShell code (in my eyes). The pipeline is immensely powerful and not using it often makes for pretty crappy code.
Re:PowerShell is open sourced and is available on Linux
by emodendroket on Thursday August 18, 2016 @03:10PM
(#12315465)
Most people writing PowerShell scripts are likely dabblers though. Anyway, I have to admit I don't really appreciate the whole pipeline idea; I just know that `$something = Some-Function` sometimes wouldn't do what I thought it would because of these semantics.