Thread overview | |||||
---|---|---|---|---|---|
|
April 26, 2018 Arguments of function as an array. | ||||
---|---|---|---|---|
| ||||
Is there a way in D to take past arguments as an array? A like a normal Variadic function. All the arguments should be of the same type just as an array. Basically I want to allow a function like this to be called without square brackets. void fun(int[] intArray) { //... } void main() { fun([5,6,4]); } Like this: void fun(int... intArray) { //typeof(intArray) is `int[]` } void main() { fun(5,6,4); } Is this doable in D? |
April 26, 2018 Re: Arguments of function as an array. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan | On 04/26/2018 11:28 PM, Jonathan wrote: > Is there a way in D to take past arguments as an array? A like a normal Variadic function. All the arguments should be of the same type just as an array. > > Basically I want to allow a function like this to be called without square brackets. > > void fun(int[] intArray) { > //... > } > void main() { > fun([5,6,4]); > } > > Like this: > > void fun(int... intArray) { > //typeof(intArray) is `int[]` > } > void main() { > fun(5,6,4); > } > > Is this doable in D? void fun(int[] intArray ...) {} https://dlang.org/spec/function.html#typesafe_variadic_functions Note that such an array is not garbage collected. It's a slice of the stack. Don't return it from the function. |
April 26, 2018 Re: Arguments of function as an array. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan | On Thursday, April 26, 2018 21:28:27 Jonathan via Digitalmars-d-learn wrote: > Is there a way in D to take past arguments as an array? A like a normal Variadic function. All the arguments should be of the same type just as an array. > > Basically I want to allow a function like this to be called without square brackets. > > void fun(int[] intArray) { > //... > } > void main() { > fun([5,6,4]); > } > > Like this: > > void fun(int... intArray) { > //typeof(intArray) is `int[]` > } > void main() { > fun(5,6,4); > } > > Is this doable in D? For better or worse, D has multiple types of variadic functions. Variadic templated functions are almost certainly the most commonly used, but what the spec calls "typesafe variadic functions" result in a dynamic array like what you're talking about: https://dlang.org/spec/function.html#typesafe_variadic_functions - Jonathan M Davis |
Copyright © 1999-2021 by the D Language Foundation