On Friday, 2 May 2025 at 22:19:53 UTC, Andy Valencia wrote:
In the following code, two questions. First, is there any difference between "x[] = y" and "x[] = y[]"? It appears not.

`y` is already a slice `int[]`, so slicing it does not change the type. Slicing without indices selects all elements, it does not change the elements the expression refers to.

Second, in assigning from arrays of differing sizes, Phobos causes an illegal instruction, rather than the sort of exception I'd have expected. I'm curious why they stepped away from D's exception architecture?

It throws a RangeError rather than an Exception. One advantage is that allows indexing an array to be used in `nothrow` code. Also, bounds checks can be turned off, in which case nothing would be thrown, and code attempting to catch this occurence would never be called.

Indexing past the end of a slice is a programming error which is not supposed to be recoverable from. If the slice length mismatch is caused by a runtime value, that's still a programmer error because the runtime value was not checked for validity.

Reply via email to