Question: Should String.upcase! work on a segment of a string?

We can assign to a sub-string, so I thought that a bang-method might also work on a sub-string.

  s = 'AA11zz'		# define a string

  > s[4..5].upcase!	# try to change part of it
  => "ZZ"                       # yeah, ok, the new string is changed, but...

  > s
  => "AA11zz"		# the original string wasn't affected

  > s[4..5] = s[4..5].upcase    # so, do it by-hand
  => "ZZ"

  > s				# and it's ok
  => "AA11ZZ"

Are there edge cases where this wouldn't be appropriate?