digitalmars.D - Array Ambiguity
- Your Name (3/3) Dec 20 2018 Static + Dynamic arrays exhibit some really weird behavior.
- bauss (9/12) Dec 20 2018 No weird behavior.
- Bastiaan Veelo (6/21) Dec 20 2018 I think fixed length arrays are passed by value, and so can be
- Jonathan M Davis (9/18) Dec 20 2018 Per the official language terminolgy, int[] is a dynamic array regardles...
- Bastiaan Veelo (8/11) Dec 20 2018 I haven’t checked the rules, but it seems logical to me. Since
Static + Dynamic arrays exhibit some really weird behavior. https://run.dlang.io/is/3RfmAb https://run.dlang.io/is/EP0SPw
Dec 20 2018
On Thursday, 20 December 2018 at 22:59:31 UTC, Your Name wrote:Static + Dynamic arrays exhibit some really weird behavior. https://run.dlang.io/is/3RfmAb https://run.dlang.io/is/EP0SPwNo weird behavior. The parameter as "int[] a" doesn't actually mean dynamic array. It means slice. It takes a slice of the static array. In the first example it picks static array because the compiler can make the array static since it's not mutated in the function. Like if you do the following: https://run.dlang.io/is/fwvd59 Then it'll pick dynamic array.
Dec 20 2018
On Thursday, 20 December 2018 at 23:18:45 UTC, bauss wrote:On Thursday, 20 December 2018 at 22:59:31 UTC, Your Name wrote:I think fixed length arrays are passed by value, and so can be mutated: https://run.dlang.io/is/zs5w6bStatic + Dynamic arrays exhibit some really weird behavior. https://run.dlang.io/is/3RfmAb https://run.dlang.io/is/EP0SPwNo weird behavior. The parameter as "int[] a" doesn't actually mean dynamic array. It means slice. It takes a slice of the static array. In the first example it picks static array because the compiler can make the array static since it's not mutated in the function.Like if you do the following: https://run.dlang.io/is/fwvd59 Then it'll pick dynamic array.The reason here is because of auto, not of ~=. Bastiaan.
Dec 20 2018
On Thursday, December 20, 2018 4:18:45 PM MST bauss via Digitalmars-d wrote:On Thursday, 20 December 2018 at 22:59:31 UTC, Your Name wrote:Per the official language terminolgy, int[] is a dynamic array regardless of what it's a slice of. And aside from lifetime issues, there really isn't a semantic difference between a dynamic array that's a slice of GC-allocated memory or a slice of something else (like a static array). It acts exactly the same, including the abilility to be appended to (it's just that if it's not GC-allocated, it's guaranteed to not be able to grow in place, whereas with a GC-allocated array, it might be able to). - Jonathan M DavisStatic + Dynamic arrays exhibit some really weird behavior. https://run.dlang.io/is/3RfmAb https://run.dlang.io/is/EP0SPwNo weird behavior. The parameter as "int[] a" doesn't actually mean dynamic array. It means slice. It takes a slice of the static array.
Dec 20 2018
On Thursday, 20 December 2018 at 22:59:31 UTC, Your Name wrote:Static + Dynamic arrays exhibit some really weird behavior. https://run.dlang.io/is/3RfmAbI haven’t checked the rules, but it seems logical to me. Since the lengths match, the fixed length array argument is a more specific match than the slice argument.https://run.dlang.io/is/EP0SPwA slice argument can take a slice of a fixed length array. The learn forum would probably have been the right place for this :) Bastiaan.
Dec 20 2018