params аргумент
От: _nn_ www.nemerleweb.com
Дата: 31.10.11 09:57
Оценка:
Как узнать если аргумент вида "params Name : Type" ?


using Nemerle;
using Nemerle.Collections;
using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;
using Nemerle.Compiler.Typedtree;
using Nemerle.Text;
using Nemerle.Utility;

using System;
using System.Collections.Generic;
using System.Linq;


namespace MacroLibrary1
{
  [MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Method)]
  macro Macro1(typeBuilder : TypeBuilder, method : ClassMember.Function)
  {
    Macro1Impl.DoTransform(Macros.ImplicitCTX(), typeBuilder, method)
  }
  
  module Macro1Impl
  {
    public DoTransform(typer : Typer, typeBuilder : TypeBuilder, method : ClassMember.Function) : void
    {
      Macros.DefineCTX(typer);
      // TODO: Add implementation here.
      _ = typeBuilder;
      _ = method;
      
     def pparameters = method.header.ParsedParameters;
     foreach (p in pparameters)
     {
         match (p.Type)
         {
           | <[ ref $_ ]> => Message.Hint("Ref");
           | <[ out $_ ]> => Message.Hint("Out");
           // | <[ params $_ ]> => Message.Hint("Params"); // Как делать ?
           | _ => ()
         }
     }
    }
  }
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: params аргумент
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.10.11 10:41
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Как узнать если аргумент вида "params Name : Type" ?

foreach (p in method.header.ParsedParameters)
{
  | <[ parameter: params $_ : $_ ]> => Message.Hint(p.Location, "params!");
  | _ => ()
}
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.