Любой язык , который не использует точки с запятой (но вместо новой строки) для разграничения операторов, потенциально позволяет это сделать. Рассмотрим Python :
>>> def foo():
... return
... { 1: 2 }
...
>>> def bar():
... return { 1: 2 }
...
>>> foo()
>>> bar()
{1: 2}
Возможно, вам удастся создать аналогичный случай в Visual Basic , но не могу понять, как, потому что VB довольно ограничен в том, где могут быть размещены значения. Но должно работать следующее, если только статический анализатор не жалуется на недоступный код:
Try
Throw New Exception()
Catch ex As Exception
Throw ex.GetBaseException()
End Try
' versus
Try
Throw New Exception()
Catch ex As Exception
Throw
ex.GetBaseException()
End Try
Из упомянутых вами языков Ruby обладает таким же свойством. PHP, C, C ++ и Java делают это не просто потому, что отбрасывают символ новой строки как пробел и требуют точки с запятой для разделения операторов.
Вот эквивалентный код из примера Python в Ruby:
>> def foo
>> return { 1 => 2 }
>> end
=> nil
>> def bar
>> return
>> { 1 => 2 }
>> end
=> nil
>> foo
=> {1=>2}
>> bar
=> nil