• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# IFn类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中IFn的典型用法代码示例。如果您正苦于以下问题:C# IFn类的具体用法?C# IFn怎么用?C# IFn使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



IFn类属于命名空间,在下文中一共展示了IFn类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: tap

        public IFn tap()
        {
            if (_tap != null)
            throw new InvalidOperationException("Stream already tapped");

            return _tap = makeTap(_xform, _src);
        }
开发者ID:kmartin,项目名称:clojure-contrib,代码行数:7,代码来源:Stream.cs


示例2: Create

        public static Delegate Create(Type delegateType, IFn fn)
        {
            MethodInfo invokeMI = delegateType.GetMethod("Invoke");
            Type returnType = invokeMI.ReturnType;

            ParameterInfo[] delParams = invokeMI.GetParameters();

            List<ParameterExpression> parms = new List<ParameterExpression>();
            List<Expression> callArgs = new List<Expression>();

            foreach (ParameterInfo pi in delParams)
            {
                ParameterExpression pe = Expression.Parameter(pi.ParameterType, pi.Name);
                parms.Add(pe);
                callArgs.Add(MaybeBox(pe));
            }

            Expression call =                    
                Expression.Call(
                    Expression.Constant(fn),
                    Compiler.Methods_IFn_invoke[parms.Count], 
                    callArgs);

            Expression body =  returnType == typeof(void)
                ? (Expression)Expression.Block(call,Expression.Default(typeof(void)))
                : (Expression)Expression.Convert(call, returnType);

            LambdaExpression lambda = Expression.Lambda(delegateType, body, true, parms);

            return lambda.Compile();
        }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:31,代码来源:GenDelegate.cs


示例3: UpdateSettings

        public void UpdateSettings(DataSource_ClojureFunction_Config sender)
        {
            minXVal = sender.MinX;
            maxXVal = sender.MaxX;
            minYVal = sender.MinY;
            maxYVal = sender.MaxY;
            precision = sender.Precision;

            clojureFunctionText1 = sender.ClojureFunction1.Trim();
            clojureFunctionText2 = sender.ClojureFunction2.Trim();

            clojureFunction1 = null;
            clojureFunction2 = null;

            if (clojureFunctionText1 != "")
            {
                try { clojureFunction1 = (IFn)ClojureEngine.EvalRaw("(fn [x y z t] " + clojureFunctionText1 + ")"); }
                catch { }
            }

            if (clojureFunctionText2 != "")
            {
                try { clojureFunction2 = (IFn)ClojureEngine.EvalRaw("(fn [x y z t] " + clojureFunctionText2 + ")"); }
                catch { }
            }
        }
开发者ID:danm36,项目名称:CLRGraph,代码行数:26,代码来源:DataSource_ClojureFunction.cs


示例4: reduce

 public object reduce(IFn f, object start)
 {
     object ret = f.invoke(start, _array[_off]);
     for (int x = _off + 1; x < _end; x++)
         ret = f.invoke(ret, _array[x]);
     return ret;
 }
开发者ID:jlomax,项目名称:clojure-clr,代码行数:7,代码来源:ArrayChunk.cs


示例5: FnSeq

 /// <summary>
 /// Initialize from given metatadata, plus first, restFn, rest.
 /// </summary>
 /// <param name="meta">The metadata to attach</param>
 /// <param name="first">The first of the sequence.</param>
 /// <param name="restFn">The function to generate the next value.</param>
 /// <param name="rest">The rest of the sequence..</param>
 FnSeq(IPersistentMap meta, object first, IFn restFn, ISeq rest)
     : base(meta)
 {
     _first = first;
     _restFn = restFn;
     _rest = rest;
 }
开发者ID:arohner,项目名称:clojure-contrib,代码行数:14,代码来源:FnSeq.cs


示例6: Future

 public Future(IFn fn)
 {
     // TODO: Use a cached thread pool when agents have one.
     _t = new Thread(new ParameterizedThreadStart(ComputeFuture));
     _t.Name = "Future";
     _t.Start(fn);
 }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:7,代码来源:Future.cs


示例7: Iterate

 private Iterate(IPersistentMap meta, IFn f, Object prevSeed, Object seed, ISeq next)
     :base(meta)
 {
     _f = f;
     _prevSeed = prevSeed;
     _seed = seed;
     _next = next;
 }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:8,代码来源:Iterate.cs


示例8: MultiFn

 /// Construct a multifunction.
 /// </summary>
 /// <param name="name">The name</param>
 /// <param name="dispatchFn">The dispatch function.</param>
 /// <param name="defaultDispatchVal">The default dispatch value.</param>
 /// <param name="hierarchy">The hierarchy for this multifunction</param>
 public MultiFn(string name, IFn dispatchFn, object defaultDispatchVal, IRef hierarchy)
 {
     _name = name;
     _dispatchFn = dispatchFn;
     _defaultDispatchVal = defaultDispatchVal;
     _methodTable = PersistentHashMap.EMPTY;
     _methodCache = MethodTable;
     _preferTable = PersistentHashMap.EMPTY;
     _hierarchy = hierarchy;
     _cachedHierarchy = null;
 }
开发者ID:kmartin,项目名称:clojure-contrib,代码行数:17,代码来源:MultiFn.cs


示例9: reduce

 public object reduce(IFn f, object start)
 {
     object ret = f.invoke(start, _array[_off]);
     if (RT.isReduced(ret))
         return ret;
     for (int x = _off + 1; x < _end; x++)
     {
         ret = f.invoke(ret, _array[x]);
         if (RT.isReduced(ret))
             return ((IDeref)ret).deref();
     }
     return ret;
 }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:13,代码来源:ArrayChunk.cs


示例10: swap

 public object swap(IFn f)
 {
     for (; ; )
     {
         object v = deref();
         object newv = f.invoke(v);
         Validate(newv);
         if (_state.CompareAndSet(v, newv))
         {
             NotifyWatches(v,newv);
             return newv;
         }
     }
 }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:14,代码来源:Atom.cs


示例11: Validate

        /// <summary>
        /// Invoke an <see cref="IFn">IFn</see> on a value to validate it.
        /// </summary>
        /// <param name="vf">The <see cref="IFn">IFn</see> to invoke.</param>
        /// <param name="val">The value to validate.</param>
        /// <remarks>Uneventful return marks a successful validation.  
        /// To indicate a failed validation, the validation function should return <value>false</value> or throw an exception.
        /// <para>This appears in multiple places.  Should find it a common home?</para></remarks>
        protected internal static void Validate(IFn vf, object val)
        {
            if (vf == null)
                return;

            bool ret = false;

            try
            {
               ret = RT.booleanCast(vf.invoke(val));
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("Invalid reference state", e);
            }

            if ( ! ret )
                throw new InvalidOperationException("Invalid reference state");
        }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:27,代码来源:ARef.cs


示例12: AddClojureDropDownBox

        public static void AddClojureDropDownBox(string labelText, Var variable, PersistentVector vals, IFn func)
        {
            string variableSymbolName = null;

            if(variable != null)
                variableSymbolName = variable.sym.Name;

            Label label = new Label();
            label.AutoSize = true;
            label.Text = labelText;

            Dictionary<string, object> labelCodeAssoc = new Dictionary<string, object>();

            ComboBox comboBox = new ComboBox();
            for (int i = 0; i < vals.Count; i += 2)
            {
                labelCodeAssoc.Add(vals[i].ToString(), vals[i + 1]);
                comboBox.Items.Add(vals[i]);
            }

            comboBox.SelectedIndex = 0;
            comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox.SelectedIndexChanged += (s, e) =>
                {
                    if (comboBox.SelectedItem == null)
                        return;

                    object code = labelCodeAssoc[comboBox.SelectedItem.ToString()];

                     if(variableSymbolName != null)
                    {
                        string newVal = code.ToString();
                        ClojureEngine.Eval("(def " + variableSymbolName + " " + newVal + ")");
                    }

                    if (func != null)
                        ClojureEngine.Log(func.invoke());
                };

            self.AddNewClojureControls(new Control[] { label, comboBox });
        }
开发者ID:danm36,项目名称:CLRGraph,代码行数:41,代码来源:ClojureDefinedUI.cs


示例13: addWatch

 public IRef addWatch(Agent watcher, IFn action, bool sendOff)
 {
     _watchers = _watchers.assoc(watcher, new object[] { action, sendOff });
      return this;
 }
开发者ID:arohner,项目名称:clojure-contrib,代码行数:5,代码来源:ARef.cs


示例14: setValidator

 /// <summary>
 /// Sets the validator.
 /// </summary>
 /// <param name="vf">The new validtor</param>
 /// <remarks>The current value must validate in order for this validator to be accepted.  If not, an exception will be thrown.</remarks>
 public virtual void setValidator(IFn vf)
 {
     Validate(vf, deref());
     _validator = vf;
 }
开发者ID:arohner,项目名称:clojure-contrib,代码行数:10,代码来源:ARef.cs


示例15: setValidator

 /// <summary>
 /// Sets the validator.
 /// </summary>
 /// <param name="vf">The new validtor</param>
 public override void setValidator(IFn vf)
 {
     if (hasRoot())
         Validate(vf, _root);
     _validator = vf;
 }
开发者ID:telefunkenvf14,项目名称:clojure-clr,代码行数:10,代码来源:Var.cs


示例16: alterRoot

 public object alterRoot(IFn fn, ISeq args)
 {
     object newRoot = fn.applyTo(RT.cons(_root, args));
     Validate(getValidator(), newRoot);
     object oldroot = _root;
     _root = newRoot;
     ++_rev;
     NotifyWatches(oldroot,newRoot);
     return newRoot;
 }
开发者ID:telefunkenvf14,项目名称:clojure-clr,代码行数:10,代码来源:Var.cs


示例17: alter

 public object alter(IFn fn, ISeq args)
 {
     set(fn.applyTo(RT.cons(deref(), args)));
     return this;
 }
开发者ID:telefunkenvf14,项目名称:clojure-clr,代码行数:5,代码来源:Var.cs


示例18: CommuteRoot

 void CommuteRoot(IFn fn)
 {
     object newRoot = fn.invoke(_root);
     Validate(getValidator(), newRoot);
     object oldRoot = _root;
     _root = newRoot;
     ++_rev;
     NotifyWatches(oldRoot, newRoot);
 }
开发者ID:telefunkenvf14,项目名称:clojure-clr,代码行数:9,代码来源:Var.cs


示例19: reduce

 public object reduce(IFn f, object start)
 {
     int step = 0;
     for (int i = 0; i < _cnt; i += step)
     {
         Object[] array = ArrayFor(i);
         for (int j = 0; j < array.Length; ++j)
         {
             start = f.invoke(start, array[j]);
             if (RT.isReduced(start))
                 return ((IDeref)start).deref();
         }
         step = array.Length;
     }
     return start;
 }
开发者ID:robertlj,项目名称:clojure-clr,代码行数:16,代码来源:PersistentVector.cs


示例20: ApplyToHelper

 public static object ApplyToHelper(IFn fn, ISeq argList)
 {
     switch (RT.BoundedLength(argList, 20))
     {
         case 0:
             argList = null;
             return fn.invoke();
         case 1:
             return fn.invoke(Util.Ret1(argList.first(),argList=null));
         case 2:
             return fn.invoke(argList.first()
                     , Util.Ret1((argList = argList.next()).first(),argList = null)
             );
         case 3:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 4:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 5:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 6:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 7:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 8:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 9:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 10:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 11:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , Util.Ret1((argList = argList.next()).first(), argList = null)
             );
         case 12:
             return fn.invoke(argList.first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
                     , (argList = argList.next()).first()
//.........这里部分代码省略.........
开发者ID:ragnard,项目名称:clojure-clr,代码行数:101,代码来源:AFn.cs



注:本文中的IFn类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# IFolder类代码示例发布时间:2022-05-24
下一篇:
C# IFlagCollection类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap