There doesn't seem to be a difference
There's actually, did you try to compile your code? These are quite different mixins:
// this is a mixin definition with a variable number of arguments
.a(...) {
// here you use built-in @arguments variable
a-value: @arguments;
}
// this is a mixin definition with a single argument
.b(@arguments) {
// here you use a variable you've just declared in mixin's argument list
// (and it's not the built-in @arguments!)
b-value: @arguments;
}
test {
.a(1, 2, 3); // OK
.b(1, 2, 3); // Error
}
Or in other words:
.a(@arguments) {
a-value: @arguments;
}
is equal to:
.a(@x) {
@arguments: @x; // defines a new variable that overrides the built-in one
a-value: @arguments;
}
There's also another way to declare a variable argument list: .mixin(@whatever...)
.
Basically it is the same as (...)
but it is useful when you need something like:
.c(@head, @tail...) {
head: @head;
tail: @tail;
}
test {
.c(1, 2, 3, 4, 5)
}