[nem-pl] Kilkla temacików
Kamil Skalski
nazgul at omega.pl
Sun Jan 4 12:48:45 CET 2004
Sunday 04 of January 2004 11:49, Michal Moskal wrote:
> On Sun, Jan 04, 2004 at 11:25:49AM +0100, Kamil Skalski wrote:
> > Mam kilka kwestii do M., ale może napiszę tutaj:
> > 1. Co myślicie o zmiennej liczbie parametrów do funkcji innych niż makra?
> > Czy to w ogóle ma sens - w ciele trzeba operować na LIŚCIE parametrów, co
> > robią tylko makra. Chyba żeby na siłę upychać w zwykłe funkcje trochę
> > więcej możliwości, bo w sumie powinny sobie poradzić.
>
> A patrzyłeś jak to jest zrobione w C#? Bo jest i pewnie powinno być tak
> samo.
Ok, w C# to jest tak:
public static void UseParams(params int[] list)
{
for ( int i = 0 ; i < list.Length ; i++ )
Console.WriteLine(list[i]);
Console.WriteLine();
}
u nas musiałoby to wyglądać
f (params l : array(int)) : void
ew.
f (params l : list(int)) : void
(dodanie słowa kluczowego 'params' nie podoba mi się za bardzo...)
Aha, no i u nich to jest oczywiście we wszystkich funkcjach, więc chyba my
możemy zrobić tak samo. I w ogóle to oni tu mają podobny myk jak nasze
problemy tuple vs. parametry - prawidłowe jest przekazanie tablicy intów do
UseParams
> 1. zabronić pisania i używania makr w tym samym pliku -- po prostu kazać
> użytkownikowi najpierw skompilować makra, a potem załadować je do
> kompilatora i używać
ble, fuj, nie! (przynajmniej docelowo)
>
> 2. zrobić jakiś hack w parserze, że jak widzi "macro ... syntax ..." to
> wtedy już dodaje regułę. problem: makra muszą być sparsowane przed
> funkcjami, które z nich korzystają, o co musi zatroszczyć się
> użytkownik (kolejność plików i funkcji w nich).
No właśnie o czymś takim myślałem i to nie jest aż taki hack. W H. nie takie
hacki mają ;)
Ale najładniej byłoby dodać jeden przebieg do kompilacji, który wyłapałby
wszystkie macra i pododawał rozszerzenia składniowe.
Jeszcze jedna sprawa - opcjonalne parametry.
assert (cond : expr, message : string_lit = "") { .. }
To w ogóle byłoby fajne, a cytuję:
"C# doesn’t provide a way of directly doing so, despite the fact that VB.NET
and .NET’s attribute system both support this functionality. This is a
subject of some debate currently in the C# community."
Myślę, że możemy zrobić to po prostu tak jak w C++
More information about the devel-pl
mailing list